728x90
이해하기
첫 숫자를 찾아서 num 개수만큼 담아야 할까? 그치만 첫 숫자는 어떻게 찾지? 라고 고민했지만 방법이 보이지 않았다...
참고한 블로그⬇️
찾아보니 내가 아주 잘못 접근했다는 것을 알게 되었다.
문제 예시와 같이 num = 3 이고, total = 12 일 때, 중요한 것은 가운데 숫자인 4라는 점이다!
3과 5는 각각 4와는 -1, +1 차이가 나고, 이를 전부 더하면 4 * num 과 같은 결과가 나오게 된다.
시작 숫자인 3은 total / num - num / 2 와 같다고 볼 수 있을 것이다.
그럼 num이 홀수인 경우에는 어떻게 해야할까? 이 또한 문제의 예시에 나와있다.
total / num = 3이고, 이를 기준으로 하여 앞으로 num / 2 - 1만큼, 뒤로 num / 2 만큼을 구하면 된다.
시작 숫자인 2는 total / num - num / 2 + 1 과 같다고 볼 수 있을 것이다.
이 두 가지 예시를 통해 우리는 num이 홀수일 경우에는 total / num - num / 2부터, num이 짝수일 경우에는 total / num - num / 2 + 1부터 배열에 추가하면 된다는 것을 알 수 있었다.
문제풀이
class Solution {
public int[] solution(int num, int total) {
int[] answer = new int[num];
boolean isOdd = (num % 2 == 1) ? true : false;
if (isOdd) {
int start = total / num - num / 2;
for (int i = 0; i < num; i++) {
answer[i] = start++;
}
} else {
int start = total / num - num / 2 + 1;
for (int i = 0; i < num; i++) {
answer[i] = start++;
}
}
return answer;
}
}
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.0] 프로그래머스 - 평행 : Java (0) | 2024.06.21 |
---|---|
[Lv.0] 프로그래머스 - 겹치는 선분의 길이 : Java (0) | 2024.06.21 |
[프로그래머스] 코딩 입문 트레이닝 Lv.0 클리어! (0) | 2024.06.21 |
[Lv.2] 프로그래머스 - 행렬 테두리 회전하기 : Java (0) | 2024.06.19 |
[Lv.0] 프로그래머스 - 특이한 정렬 : Java (0) | 2024.06.19 |