문제정리
카펫 중앙에 노란색 테두리 갈색
카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 길다.
갈색 개수, 노란색 개수를 주어지며, return은 가로, 세로 크기를 순서대
→ 세로 길이는 최소 3개 이상 이라는 조건을 빠트리고 생각함..
처음 작성한 코드
class Solution {
public int[] solution(int brown, int yellow) {
int x = brown / 2;
int a = 0;
int b = 0;
int sum = brown + yellow;
for (int i = 2; i < x; i++) {
if (a < b) {
break;
}
if (sum % i == 0) {
a = sum / i;
b = i;
} else {
continue;
}
}
int[] answer = {b, a};
return answer;
}
}
위 코드에서는 노란색개수를 고려하지 않았고, 그냥 단순히 brown + yeollow를 더하면 전체 카펫의 크기가 되고, % i를 해서 나머지가 0이 되는 것만 찾아서 가로 세로 최소로 곱셈 하는 걸 찾아서 리턴 시킨건데 실패..
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int carpet = brown + yellow;
for (int i = 3; i <= carpet; i++) {
int col = i; // 세로
int row = carpet / col; // 가로
if (row >= col) {
if ((row - 2) * (col - 2) == yellow) {
answer[0] = row;
answer[1] = col;
break;
}
}
}
return answer;
}
}
→ 3개 이상인 조건도 걸어주고 yellow 개수도 조건을 걸어줌
시간은
테스트 코드에서는 성공하고 최종 제출에서 막히면.. 시간이 더 오래 걸리게 되는 것 같다.. 또다른 조건을 생각해내야 하니깐.. 문제를 잘 분석하는게 중요........
'코딩테스트' 카테고리의 다른 글
프로그래머스(JAVA) - level2(이진 변환 반복하기) (1) | 2025.01.21 |
---|---|
프로그래머스(JAVA) - level2(구명보트) (1) | 2025.01.20 |
프로그래머스(JAVA) - level2(숫자의 표현) (0) | 2025.01.13 |
프로그래머스(JAVA) - level2(JadenCase 문자열 만들기 ) (0) | 2025.01.12 |
프로그래머스(JAVA) - level2(최솟값 만들기) (0) | 2025.01.11 |