728x90
반응형
이번문제는 문제를 보고 어떻게하지 생각했으나 곰곰히 생각해보니 답이 나오는 문제였다.
문제가 생각보다 쉬워서 레벨2가 아닌거 같다는 생각이 들 정도다.
문제 설명
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
입출력 예
brown | yellow | return |
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
나는 이 문제를 그려보면서 생각해보니 가로와 세로의 길이를 결정짓는건 노란색의 길이라는것을 알게 되었다.
그래서 알게된 규칙은 아래와 같다.
1. yellow% 변수 == 0 이면 해당 수로 가로세로가 구해진다.
2. 구해진 가로세로에 +2를 해주고 곱한다. (가로+2) * (세로+2)
3. 곱한수 - yellow 했을때 나오는 수가 brown과 같다면 그 가로 세로가 정답이다.
위내용을 소스로 보면 아래와 같다.
import java.util.Arrays;
public class PreTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
PreTest p = new PreTest();
int yellow = 2;
int brown = 10;
System.out.println(Arrays.toString(p.solution(brown,yellow)));
}
public int[] solution(int brown, int yellow) {
int[] answer = {};
answer = new int[2];
//이건 어떻게 접근해야하냐
//1. 이건 노란색의 수를 일일히 나눠보고 이를 가지고 해야한다.
for(int i = 1; i<=yellow; i++) {
System.out.println("i = "+ i);
if(yellow%i == 0) { //i로 나눴을때 나눠 떨어지면 진입
int width = i+2;
System.out.println("가로 : "+width);
int height = (yellow/i) + 2;
System.out.println("세로 : "+ height);
int area = width * height;
System.out.println("넓이 : " + area);
int result = area - yellow;
System.out.println("갈색 개수 : "+ result);
if(result== brown) {
if(height > width) {
int temp = height;
height = width;
width = temp;
}
answer[0] = width;
answer[1] = height;
System.out.println("가로 : "+ width + " 세로 : "+ height);
break;
}
}
}
return answer;
}
}
느낀점
1. 문제를 곰곰히 보고 규칙을 찾아내려고 해보자.
2. 변수 % 0 은 에러가 난다.
반응형
'코딩일기 > 알고리즘' 카테고리의 다른 글
[프로그래머스 : 레벨 2] 조이스틱 : 탐욕알고리즘 (Java) (0) | 2021.06.11 |
---|---|
[프로그래머스 : 레벨 1] 체육복 (Java) (0) | 2021.06.09 |
[프로그래머스 : 레벨2] 소수 찾기 : 재귀호출 (Java) (0) | 2021.06.08 |
[프로그래머스 : 레벨1] 모의고사 (Java) (0) | 2021.06.08 |
[프로그래머스 : 레벨 2] H-Index : 문제 설명 (Java) (0) | 2021.06.04 |