상세 컨텐츠

본문 제목

카펫(2레벨)

코딩테스트

by dofury 2023. 1. 15. 23:06

본문

728x90

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 한다. 

 

728x90

'코딩테스트' 카테고리의 다른 글

예상 대진표(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

관련글 더보기

댓글 영역