-
[프로그래머스] 카펫ALGORITHM/PROGRAMMERS 2021. 7. 22. 09:19
https://programmers.co.kr/learn/courses/30/lessons/42842
2021-07-22
12345678public static int[] solution(int brown, int yellow) {for(int i = 1; i <= Math.sqrt(yellow); i++) {if((yellow % i == 0) && (brown == ((yellow/i+i)*2 + 4))) {return new int[]{yellow/i+2, i+2};}}return null;}cs #문제풀이
약수를 구한다고 생각을 했다.
예를 들어, 노란색이 24개인 경우,
(1, 24), (2, 12), (3, 8), (4, 6) 이렇게 4가지 경우의 수가 나올 수 있다. (가로 >= 세로 이므로 반대의 경우 고려 하지 않는다.)
(1,24) 인 경우, 가로는 24이고, 세로는 1 인데 그렇게 되면 갈색 격자가 24*2 + 1*2 + 4 가 필요하여 주어진 brown값과 맞지 않는다.
(4,6)인 경우, 가로는 6이고, 세로는 4이니깐 갈색 격자는 6*2 + 4*2 + 4 == 24로 주어진 갈색 격자 값과 일치한다.
이러한 방식으로 노란색의 가로, 세로 값으로 갈색 격자가 몇개인지 찾으면 된다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기 (Summer/Winter Coding(~2018)) (0) 2021.07.22 [프로그래머스] 최댓값과 최솟값 (0) 2021.07.22 [프로그래머스] JadenCase 문자열 만들기 (0) 2021.07.21 [프로그래머스] 거리두기 확인하기 (2021 카카오 채용연계형 인턴십) (0) 2021.07.19 [프로그래머스] 멀쩡한 사각형 (Summer/Winter Coding(2019)) (0) 2021.07.16