숫자의 표현

이준경·2021년 5월 22일
0

<나의풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
    public int solution(int n) {
        int answer = 1;
        
        for(int i=1; i<=n/2; i++){
            int j=i;
            int sum=0;
            while(true){
                sum+=j++;
                if(sum==n){
                    answer++;
                    break;
                }else if(sum>n){
                    break;
                }
            }
        }
        return answer;
    }
}
cs
  1. i가 n/2의 수가 되기 전까지만 반복
  2. j에 i 대입후 sum+=j++가 n과 같으면 anwer++후 탈출하거나 n보가 크면 그냥 탈출.
  3. answer 반환

<다른사람풀이>

1
2
3
4
5
6
7
8
9
10
public int expressions(int num) {
        int answer = 0;
        for (int i = 1; i <= num; i += 2) {
            if (num % i == 0) {
                answer++;
            }
        }
        return answer;
    }
 
cs

주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수는 주어진 수의 홀수 약수의 개수와 같다라는 정수론 정리를 이용한 풀이

0개의 댓글

관련 채용 정보