일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백준
- 11688
- 2866
- 20006
- 자바
- java
- 1342
- 25379
- SWEA
- 17087
- pccp
- 프로그래머스
- 23971
- 6730
- sovled.ac
- PYTHON
- 9081
- 파이썬
- 알고리즘
- 라이브러리
- programmers
- 24511
- 사용자정의필터
- 15965
- solved.ac
- Algorithm
- 장고
- Django
- PS
- sloved.ac
Archives
- Today
- Total
코깽이의 코딩일기
[ 프로그래머스 / JAVA / Level 2 ] 숫자의 표현 본문
반응형
제출한 코드
import java.io.*;
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
int left = 1;
int right = 1;
int sum = 1;
n = 1;
// 예외 상황
if(n==1){
return 1;
}
// 슬라이딩 윈도우 시작
while(left <= n && right <= n){
// sum이 n보다 작은 경우
if(sum < n){
right++;
sum += right;
}
// sum이 n보다 크거나 같은 경우
else if(sum >= n){
// left 값을 올리기 전에 빼고 올려준다.
sum -= left;
left++;
}
// 정답을 찾은 경우
if(sum == n){
answer++;
}
}
return answer;
}
}
생각한 로직
1. "연속 되는 수의 합" 을 구하는 문제이기에 슬라이딩 윈도우로 해결하였다.
2. left와 right를 1로 잡고 시작.
3. sum이 n보다 작으면 right++;
4. sum이 n보다 크면 left++; ( 단, sum의 값을 수정 후에 left를 증가시켜야한다. )
5. 값을 찾은 경우 answer++
반응형
'PS > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 / JAVA / Level 1 ] [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.06.13 |
---|---|
[ 프로그래머스 / JAVA / Level 2 ] 점프와 순간 이동 (0) | 2024.06.08 |
[ 프로그래머스 / JAVA / Level 2 ] 짝지어 제거하기 (0) | 2024.05.30 |
[ 프로그래머스 / JAVA / Level 2 ] 다음 큰 숫자 (1) | 2024.05.30 |
[ 프로그래머스 / JAVA / Level 3 ] 가장 먼 노드 (0) | 2024.05.28 |