fun solution(brown: Int, yellow: Int): IntArray {
var lengthYellowRow = yellow
var lengthYellowColumn = 1
while (lengthYellowRow >= lengthYellowColumn) {
val divideToDouble = yellow / lengthYellowColumn.toDouble()
if(divideToDouble % 1 == 0.0) {
lengthYellowRow = divideToDouble.toInt()
val numBrown = (lengthYellowRow * 2) + (lengthYellowColumn * 2) + 4
if (numBrown == brown)
break
}
lengthYellowColumn++
}
return intArrayOf(lengthYellowRow + 2, lengthYellowColumn + 2)
}
풀이 과정
1. 노란색 칸의 세로 길이 (lengthYellowColumn)를 1씩 증가시켜 가로길이 >= 세로길이 일 때까지 반복문을 돌린다.
2. 세로길이가 될 수 있는 길이를 확인한다.
2.1. 전체 노란색 칸의 개수(yellow)를 세로 길이로 나눴을 때 딱 떨어지는지 확인한다.
2.2. 딱 떨어지면 가능한 세로 칸수이므로 그 때의 갈색 칸 개수를 확인한다.
3. 문제의 갈색 칸 개수와 계산한 갈색한 개수가 맞으면 반복문을 나온다.
4. 계산한 노란색 칸의 가로x세로 길이로부터 갈색칸까지 둘러싼 전체 길이를 계산해 리턴한다.
포인트
- 노란색의 세로 길이를 1씩 증가시키며 가능한 가로x세로 길이를 확인하는 것
'TLI > 코드카타' 카테고리의 다른 글
2024.06.14 TIL 코트카타 82번(멀리뛰기) (1) | 2024.06.14 |
---|---|
2024.06.13 TIL 코트카타 81번(N개의 최소공배수) (0) | 2024.06.13 |
2024.06.10 TIL 코트카타 78번(피보나치수) (0) | 2024.06.10 |
2024.06.08 TIL 코트카타 76번(JadenCase 문자열 만들기) (1) | 2024.06.08 |
2024.06.07 TIL 코트카타 75번(최댓값과 최솟값) (0) | 2024.06.07 |