-
프로그래머스(Level 2) - 카펫Coding Test/Coding Test 문제 풀이 2022. 1. 28. 12:36
문제 설명
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
풀이
카펫의 갈색 격자의 수와 노란색 격자의 수가 주어졌을 때, 이를 만족하는 카펫의 가로, 세로 길이를 구하는 문제이다.
우선 갈색 격자의 수와 노란색 격자의 수를 합쳐서 전체 격자의 수를 구한다. 전체 격자의 수에서 구성될 수 있는 모든 가로, 세로 조합을 탐색한다. 이때 적합한 가로, 세로 조건은 다음과 같다.
1. 가로, 세로의 길이는 정수여야 한다.
2. 가로의 길이는 세로의 길이와 같거나, 길어야 한다.
위 조건에 부합하는 가로, 세로를 찾은 후 해당 가로, 세로 길이로 노란색 격자의 개수를 만들 수 있는지 확인하면 되는 문제이다.
가로, 세로 길이가 주어졌을 때 노란색 격자의 개수를 구하기 위해서는 (가로 - 2) * (세로 - 2)의 식을 이용하면 된다.
전체 소스코드
import java.io.*; import java.util.*; class Solution10 { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int total = brown + yellow; for (int col = 3; col < total; col++) { /* row가 정확히 나누어 떨어지는 경우(정수인 경우) */ if (total % col == 0) { int row = total / col; /* 노란색 격자의 수와 일치하는 경우 */ if (col <= row && (row - 2) * (col - 2) == yellow) { answer[0] = row; answer[1] = col; break; } } } return answer; } }
728x90'Coding Test > Coding Test 문제 풀이' 카테고리의 다른 글
프로그래머스(Level 3) - 가장 먼 노드 (0) 2022.01.29 프로스래머스(Level 2) - H-Index (0) 2022.01.28 프로그래머스 (Level 3) - 가장 큰 수 (0) 2022.01.27 프로그래머스 (Level 3) - 여행경로 (0) 2022.01.27 프로그래머스 (Level 3) - 단어 변환 (0) 2022.01.26