class Solution {
fun solution(brown: Int, yellow: Int): IntArray {
var answer = IntArray(2,{0})
var index = 0
if(yellow/2 < 1)
{
index = 1
}
else
{
index = yellow/2
}
for(i in 1..index)
{
if(yellow % i == 0)
{
if(brown == ((yellow / i) * 2) + (i * 2) + 4)
{
answer[0] = yellow / i + 2
answer[1] = i + 2
break
}
}
}
return answer
}
}
이번 문제는 완전탐색이라 적혀있어서 탐색 알고리즘을 활용하는건가 싶었는데
일단 생각한대로 코딩하니까 쉽게 풀렸다.
해설
yellow의 형태(a x b)를 모르니까
반복문을 통해 a 값을 yellow값의 절반까지만 (a x b == b x a) 증가시켜준다.
이 때 yellow가 1일경우 0.5라 반복문이 돌아가지않기 때문에 조건문을 통해 최소한 1이 되게 해준다.
만약 a로 나눠진다면 b의 값도 정해지게 된다.
이 때 갈색카펫은 테두리에 있기 때문에 yellow 카펫의 (가로길이 x 2) + (세로길이 x 2) + 4(모서리 4개)가 맞는지
확인해준다. 만약 맞다면 이형태가 맞기 때문에 answer에 값을 집어넣고 break 한다.
예상 대진표(2레벨) (0) | 2023.01.20 |
---|---|
N개의 최소공배수(2레벨) (0) | 2023.01.15 |
피보나치 수(2레벨) (0) | 2023.01.15 |
이진 변환 반복하기(2레벨) (0) | 2023.01.14 |
JadenCase 문자열 만들기(레벨 2) (0) | 2023.01.14 |
댓글 영역