반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12924
문제 설명
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현하는 방법이 여러 개라는 사실을 알게 되었습니다. 예를 들어 15는 다음과 같이 4가지로 표현할 수 있습니다.
- 1 + 2 + 3 + 4 + 5 = 15
- 4 + 5 + 6 = 15
- 7 + 8 = 15
- 15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해 주세요.
제한사항
- n은 10,000 이하의 자연수입니다.
입출력 예
n | result |
15 | 4 |
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
코드
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= n; i++) {
int sum = 0;
// 현재 i부터 n까지 자연수를 더해가면서 합을 계산
for (int j = i; j <= n; j++) {
sum += j;
// 현재 i부터 n까지 자연수를 더해가면서 합을 계산
if (sum == n) {
answer++;
break;
}
// 합이 주어진 n보다 크면 내부 반복문 종료
if (sum > n) break;
}
}
return answer;
}
}
코드 설명
주석 참고
- 이 문제는 정수 n을 연속된 자연수들의 합으로 나타낼 수 있는 방법의 수를 구하는 문제다.
- 첫 번째 for 문을 통해 i부터 n까지 1씩 증가시키면서 반복한다. 반복문 내에서 연속된 자연수의 합을 저장하기 위한 변수 sum을 초기화한다.
- 중첩 for 문에서 현재 i를 시작(j = i)으로 n까지 1씩 증가시키면서 sum에 더한다.
- sum이 n과 같으면 answer를 1 증가시키고 중첩 for 문을 종료하여 다음 i부터 다시 시작한다.
- 만약, sum이 n보다 커지면 중첩 for 문을 종료하여 다음 i부터 다시 시작한다.
- 모든 반복문이 종료되면 answer를 반환한다.
반응형
'코딩 테스트(Coding Test) > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 피보나치 수 - 자바(Java) (0) | 2023.08.18 |
---|---|
[프로그래머스] 다음 큰 숫자 - 자바(Java) (0) | 2023.08.17 |
[프로그래머스] 이진 변환 반복하기 - 자바(Java) (0) | 2023.08.15 |
[프로그래머스] 올바른 괄호 - 자바(Java) (0) | 2023.08.14 |
[프로그래머스] 최솟값 만들기 - 자바(Java) (1) | 2023.08.13 |