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 | 31 |
Tags
- pandas
- 후위 표기법
- 에라토스테네스의 체
- Stack
- 동적계획법
- 문자열
- 메뉴리뉴얼
- Dynamic Programming
- 조합
- 점프와 순간이동
- 규칙찾기
- 반복문
- Java
- fragment identifier
- 순열
- HashSet
- 튜플
- 2017 카카오 코드
- 보이어무어
- 알고리즘
- 쿼드압축 후 개수세기
- 영문자 확인
- 완전 탐색
- dfs
- HashMap
- 최소공배수
- python
- 완전탐색
- 어려웠던 문제
- 프로그래머스
Archives
- Today
- Total
csmoon1010의 SW 블로그
[200811] 숫자의 표현 - 연습문제(level2) 본문
1. 문제 이해
- 자연수 n을 연속한 자연수들로 표현할 수 있는 방법의 가짓수를 return
- ex> 15 = 1+2+3+4+5
= 4+5+6
= 7+8
= 15 [결과 : 4가지]
2. 전략
1) 변수 setting
- count : n을 표현할 때 사용하는 자연수의 개수
- start : 자연수 합의 시작값 = 가장 작은 자연수
→ (start) + (start + 1) + ... + (start + count-1)
= count * start + (0+1+ ... + count-1)
= count * start + b = n [b로 대체해서 표현]
2) 사용하는 자연수 개수에 따라 표현 가능한지 판단
- 식 : start = (n-b) / (double)count
- count를 1부터 시작하여 start값을 구함
: start가 자연수인 경우만 가짓수에 포함, start가 0보다 큰 동안만 진행
3. 참고 사항
1) 나눗셈(실수 결과가 나올 수 있도록)
- 변수 하나를 double로 type 변환을 해준다.
- (double)과 같은 형태로 명시적으로 type 변환
4. 코드
class Solution {
public int solution(int n) {
int answer = 0;
int b = 0; int count = 1;
while(true){
double start = (n-b)/(double)count;
if(start <= 0) break;
if(start % 1 == 0) answer++;
b += count;
count++;
}
return answer;
}
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
[200901] 최댓값과 최솟값 - 연습문제(level2) (0) | 2020.09.01 |
---|---|
[200831] 폰켓몬 - 찾아라 프로그래밍 마에스터(level2) (0) | 2020.08.31 |
★[200807] 땅따먹기 - 연습문제(level2) (0) | 2020.08.07 |
[200804] 다음 큰 숫자 - 연습문제(level2) (0) | 2020.08.04 |
[200803] 올바른 괄호 - 연습문제(level2) (0) | 2020.08.03 |
Comments