
내가 작성한 코드
- 배열의 합에 집중함
class Solution {
public int[] solution(int num, int total) {
int[] answer = new int[num];
// 정답 배열 초기화
for(int i = 1; i <= num; i++) {
answer[i-1] = i;
}
while (true) {
int sum = Arrays.stream(answer).sum(); // 배열의 합
// 배열의 합이 total보다 작을때 배열의 모든 원소값을 1씩 증가
if (sum < total) {
for(int i = 0; i < answer.length; i++) {
answer[i]++;
}
continue;
}
// 배열의 합이 total보다 클때 배열의 모든 원소값을 1씩 감소
if (sum > total) {
for(int i = 0; i < answer.length; i++) {
answer[i]--;
}
continue;
}
return answer;
}
}
}
다른 사람의 코드
- 시작하는 숫자를 구하는 것이 관건
class Solution {
public int[] solution(int num, int total) {
int[] answer = new int[num];
int check = num * (num + 1) / 2; // num개의 연속된 정수의 합
int start = (total - check) / num + 1; // 시작 숫자 계산
for (int i = 0; i < answer.length; i++) {
answer[i] = start + i; // 연속된 숫자 배열 생성
}
return answer;
}
}
Share article