-
728x90
문제 설명
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수
num
과total
이 주어집니다. 연속된 수num
개를 더한 값이total
이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.제한 사항
- 1 ≤ num ≤ 100
- 0 ≤ total ≤ 1000
- num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.
입출력 예
num total result 3 12 [3, 4, 5] 5 15 [1, 2, 3, 4, 5] 4 14 [2, 3, 4, 5] 5 5 [-1, 0, 1, 2, 3] 답안
class Solution { public int[] solution(int num, int total) { int[] answer = new int[num]; int idx = 0; int center = total/num; if(num%2==1) { for(int i=center-(num/2); i<center-(num/2)+num; i++) { answer[idx++] = i; } } else { for(int i=center-(num/2-1); i<center-(num/2-1)+num; i++) { answer[idx++] = i; } } return answer; }
이 문제에서 제일 중요한 건 바로 처음 값 찾는 것이다. 사실 감을 못잡아서 질문하기에서 힌트를 보고 작성했는데
파라미터
num
이 홀수면center
에서 num/2를 빼면 시작 값이 나오고num
이 짝수일 경우엔 num/2-1를 빼주면 시작 값을 도출해 낼 수 있다.class Solution { public int[] solution(int num, int total) { int[] answer = new int[num]; int check = num*(num+1) / 2; int start = (total - check) / num + 1; for (int i = 0; i < answer.length; i++) { answer[i] = start + i ; } return answer; } }
하우에버, 이렇게 짜면 num이 홀,짝인지 상관없이 첫 시작 수를 구할 수 있다.
뇌가 흐물흐물해지는 기분 .... ;-(
728x90'algorithm' 카테고리의 다른 글
자바 알고리즘 - 잘라서 배열로 저장하기 (0) 2023.08.29 자바 알고리즘 - 종이 자르기 (0) 2023.08.28 자바 알고리즘 - 다음에 올 숫자 (0) 2023.08.28 자바 알고리즘 - 등차수열의 특정한 항만 더하기 (0) 2023.08.25 자바 알고리즘 - flag에 따라 다른 값 반환하기 (0) 2023.08.24