쌓고 쌓다
[프로그래머스] 숫자의 표현 Java 풀이 및 해설 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12924
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이 방법
연속된 자연수들의 합으로 총합을 찾는 문제이다.
연속된 자연수이므로 시작 자연수를 나타내는 Left와 끝 자연수를 나타내는 Right 자연수를 선언한다.
Left와 Right 까지의 합을 찾는 목표 값과 비교하며 늘렸다 줄였다하며 찾아간다.
Left부터 Right까지의 합이 목표값보다 작다면 Right를 늘려주고
Left부터 Right까지의 합이 목표값보다 크다면 Left를 줄여주며
연속된 자연수들의 합으로 목표값을 만들 수 있는 가짓수를 찾을 수 있다.
Left와 Right의 늘였다줄였다 반복은 left가 right보다 작거나 같을때까지 반복하면 된다.
전체 코드
class Solution {
public int solution(int n) {
int answer = 0;
int left = 1;
int right = 1;
while (left <= right) {
int sum = 0;
for (int i = left; i <= right; i++) {
sum += i;
}
if (sum < n) { // sum이 목표값 n 보다 작은경우 right를 늘림
right++;
} else if (sum == n) { // sum == n
answer++;
right++;
} else { // n보다 큰 경우 left 이동
left++;
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기(Java) 풀이 및 해설 (2) | 2025.01.25 |
---|---|
[프로그래머스] 순위 자바(Java) 풀이 및 해설 (0) | 2024.08.12 |
[프로그래머스] 부대복귀 자바(Java) 풀이 및 해설 (0) | 2024.05.27 |
[프로그래머스] [1차] 셔틀버스 자바(Java) 풀이 및 해설 (0) | 2024.05.22 |
[프로그래머스] 가장 긴 팰린드롬 자바(Java) 풀이 및 해설 (0) | 2024.05.21 |
Comments