-
[프로그래머스] 카펫Algorithm 2020. 9. 15. 12:29반응형
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 빨간색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 빨간색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 빨간색 격자의 수 red가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
import java.util.Arrays; public class Carpet { public static void main(String[] args) { System.out.println(Arrays.toString(solution(24, 24))); } static public int[] solution(int brown, int red) { int[] answer = {0,0}; int index = (brown-4)/2; for(int i=1; i<=index; i++) { System.out.println(i*(index-i)); if(red == i*(index-i)){ answer[1]=i+2; answer[0]=(index-i)+2; break; } } return answer; } }
수학적 방법을 사용하여 풀이를 하였다.
브라운은 무조건 레드를 둘러싸야 하기 때문에
모서리 4칸을 뺀 가로 + 세로는 (brown-4)/2 가 된다.
그러므로 반복문을 돌려 red = i*((brown-4)/2)-i)가 성립을 하면
둘러 쌓인 가로는 i, 세로는 (brown-4)-i가 된다.
마지막으로 모서리 4칸을 뺀걸 가로 세로에 2씩 더해주면 카펫의 크기가 나온다.
반응형'Algorithm' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (0) 2020.09.15 [프로그래머스] 숫자 야구 (0) 2020.09.15 [프로그래머스] K번째수 (0) 2020.09.15 [프로그래머스] 크레인인형뽑기게임 (0) 2020.09.15 [프로그래머스] 타겟 넘버 (0) 2020.09.15