입출력 예 설명
입출력 예 #1
- num = 3, total = 12인 경우 [3, 4, 5]를 return합니다.
입출력 예 #2
- num = 5, total = 15인 경우 [1, 2, 3, 4, 5]를 return합니다.
입출력 예 #3
- 4개의 연속된 수를 더해 14가 되는 경우는 2, 3, 4, 5입니다.
- 내 풀이
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int num, int total) {
int[] answer = {};
// total 값과 비교하기 위한 변수
int sum = 0;
// for (int i = num; i <= total; i++) { 으로 하니 4번째 테스트를 돌릴수 없음
// -num 부터 total을 포함해서 반복
for (int i = -num; i <= total; i++) {
// num을 포함하여 total이 되는 값을 담기위한 list
List<Integer> check = new ArrayList<>();
// 시작하는 첫 값을 담는다
sum = i;
check.add(i);
// 순차적으로 + 해야 하기 때문에 i + 1 , num를 포함해야하기 때문에 num+i
for (int j = i+1; j < num+i; j++) {
sum += j;
check.add(j);
// sum과 total 값이 같으면 연속된 수의 합
if (sum == total){
// arrayList를 stream을 이용하여 값을 순차적으로 넣어줌
answer = check.stream().mapToInt(v ->v).toArray();
break;
}
}
// 연속되는 값을 찾게 되면 바깥 for문 종료
if(sum == total){
break;
}
}
return answer;
}
}
테스트 케이스 1번과 7번이 계속 실패하여 다른 분의 풀이를 참조한다.
- 다른 사람 풀이
class Solution {
public int[] solution(int num, int total) {
int[] answer = {};
answer = new int[num];
int middleNumber = total / num;
int subtracNumber = total % num == 0 ? num / 2 : num / 2 - 1;
int startNumber = middleNumber - subtracNumber;
for (int i = 0; i < num; i++) {
answer[i]= startNumber + i;
}
return answer;
}
}
입출력 예를 보니 num의 수 만큼 연속되는 수가 되는 것으로 보인다
그래서 answer의 크기를 num로 초기화 시킨것
해당 코드로 값이 어떻게 생성되는지 이해는 되지만 위 풀이 처럼 생각을 못하겠다....
'프로그래머스 > [프로그래머스 - JAVA] Lv.0' 카테고리의 다른 글
[프로그래머스 - JAVA] 문자열 내림차순으로 배치하기 (0) | 2023.03.29 |
---|---|
[프로그래머스 - JAVA] 다음에 올 숫자 (0) | 2023.03.18 |
[프로그래머스 - JAVA] OX퀴즈 (0) | 2023.03.18 |
[프로그래머스 - JAVA] 최빈값 구하기 (0) | 2023.03.18 |
[프로그래머스 - JAVA] 다항식 더하기 (0) | 2023.03.18 |
댓글