https://school.programmers.co.kr/learn/courses/30/lessons/12924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#문제 설명
자연수 n을 연속한 자연수들로 표현하는 방법의 개수를 반환하시오.
#나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1; i<=n; i++){
int num = 0;
int a = i;
while(num<n){
num+=a;
a++;
}
if(num==n){
answer++;
}else if(num > n){
continue;
}
}
return answer;
}
}
#다른 풀이
class Solution {
public int solution(int n) {
int answer = 1; //최소값 = 자기 자신
for(int i = 1; i <= n / 2; i++) {
int sum = i;
for(int j = i + 1; sum < n; j++) {
sum += j;
}
if(sum == n) answer++;
}
return answer;
}
}
#해답에서 얻어가는 지식
1. 자기자신의 절반의 수 이상의 값부터 더하면 무조건적으로 자기자신(n)을 초과한다.
1. 자기 자신인 값을 answer = 1로 넣어두고,
2. 절반까지의 수를 반복
3. 1씩 더해가며 sum == n 이라면 answer++
'💡알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] Level 2. 이진 변환 반복하기 (0) | 2023.04.19 |
---|---|
LV2. 최솟값 만들기 With Java (0) | 2023.04.11 |