Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- pandas
- 머신러닝(딥러닝)
- flatten
- Java
- 카카오클라우드스쿨2기
- 파이썬
- 데이터베이스
- 연산자
- 개발자
- Database
- 데이터베이서
- 머신러닝
- CNN
- JavaScript
- 데이터베이스 개론
- tensorflow
- 이것이 자바다
- 머신러닝야학
- MySQL
- reshape
- Python
- 판다스
- 생활코딩 머신러닝야학
- 야학
- 딥러닝
- 생활코딩 데이터베이스
- LeNet
- 생활코딩
Archives
- Today
- Total
IT's 우
[java] 프로그래머스 - 숫자의 표현 본문
728x90
📖 풀이한 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 문제에서 사용된 알고리즘
- 투포인터
📜 코드 설명
- 연속된 구간의 시작을 left, 끝을 right로 주었다. 연속된 구간의 합(left ~ right)은 num (초기화 : left = 1, right = 1, num = 1)
- right가 n이라면 탐색의 끝(right 하나가 n을 충족하므로)이므로 answer을 하나 추가해 주고 반복문을 끝내주었다.
- 그 외에 경우는
- num이 n인 경우 ( 연속된 구간이 n인 경우를 찾음) (포인터를 둘 다 하나씩 늘려준다.)
- answer ++
- right 값을 +1
- num에는 right(늘린 값)을 더해주고 left(left도 오른쪽으로 옮길 것이므로 전 값을 빼준다.)를 빼준다.
- left 값을 +1
- num이 n보다 작은 경우 (right 값을 하나 늘려준다.)
- right 값을 +1해주고
- num에 늘린 right 값 더해준다.
- num이 n보다 크다면 (left 값을 하나 늘려준다.)
- num에 left 값을 빼주고
- left 값을 +1 해준다.
📜 코드
public class 숫자의표현 {
public int solution(int n) {
int answer = 0;
int left = 1;
int right = 1;
// left ~ right 연속된 구간의 합
int num = 1;
while (right <= n) {
// right가 n이라면 탐색의 끝이므로 answer++
if (right == n) {
answer++;
break;
}
// 현재 left~ right 구간의 합 num이 n이면 더 탐색하기 위해 right와 left를 오른쪽으로 하나씩 옮겨준다.
// num에는 늘린 right를 더해주고, 늘리기 전 left를 빼준다.
else if (num == n) {
answer++;
right++;
num = num + right - left;
left++;
}
// num이 n보다 작으면 right를 늘려주고, num에도 늘린 right를 더해준다.
else if (num < n) {
right++;
num += right;
}
// num이 n보다 크다면 left를 빼주고 left를 하나 늘려준다.
else if (num > n) {
num -= left;
left++;
}
}
return answer;
}
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[java] 프로그래머스 - n^2 배열 자르기 (0) | 2023.08.16 |
---|---|
[java] 프로그래머스 - k진수에서 소수 개수 구하기 (2) | 2023.08.09 |
[java] 프로그래머스 - 짝지어 해결하기 (0) | 2023.08.01 |
[Java] 프로그래머스 - 기지국 설치 (0) | 2023.07.19 |
[Java] 프로그래머스 - 달리기 경주, HashMap (0) | 2023.07.18 |