조급하면 모래성이 될뿐

[프로그래머스]숫자의 표현 본문

Algorithm/Programmers

[프로그래머스]숫자의 표현

Pawer0223 2020. 1. 4. 22:26

문제링크 : https://programmers.co.kr/learn/courses/30/lessons/12924

 

코딩테스트 연습 - 숫자의 표현 | 프로그래머스

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한사항 n

programmers.co.kr

나의 풀이

풀이자체는 어렵지 않았다.

 

- 시작 값: i ( i는 1부터 n까지 )

 

- n보다 작으면 계속 더해간다.

 

- n보다 크거나 같은경우 while을 빠져나온다.

 

- 빠져나왔을 때, sum이 n과 같다면 answer++해준다.

 

	public static int solution(int n) {
		int answer = 0;
		
		
		for ( int i = 1 ; i <= n ; i ++ ) {
			int sum = 0 ;
			
			int start = i ;
			
			while ( sum < n && start <= n ) {
				sum+=start;
				start++;
			}
			
			if ( sum == n ) answer++;
		}
		
		return answer;
	}
    
    public int solution2(int n) {      
		    int answer = 0;      
	        for (int i = 1; i <= n; i += 2) {
	            if (n % i == 0) {
	                answer++;
	            }
	        }
	        return answer;
	  }

후기

다른사람의 풀이를보는데.. 너무 신박했다..

 

풀이의 코드에 아래와 같은 댓글이 있었다...

 

"주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수는 주어진 수의 홀수 약수의 개수와 같다라는 정수론 정리가 있습니다."

 

위 댓글에서 말씀하신 "정수론 정리"를 적용하여 코드로풀면 solution2가 된다...

 

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

 

기억하자..!

반응형