ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 숫자의 표현
    알고리즘/프로그래머스 2020. 9. 25. 11:02

    출처 : https://programmers.co.kr/learn/courses/30/lessons/12924

     

    나의 문제 풀이 

     > 1부터 순차적으로 n까지 숫자를 반복하며 더했을때 더한 값이 n과 일치할 경우 count, 반복문 break.

    public class ExpressionOfNumber {
    
    	public int solution(int n){
    		/*		
    		efficiency : 1.735ms
    		int answer = 0;		
    		int i = 1;
    		while(i <=n){
    		
    			int temp = 0;
    			for(int j=i; j<=n; j++){
    				temp +=j;
    				if(temp == n){
    					answer++;
    					break;
    				}else if(temp > n){
    					break;
    				}
    			}
    			i++;
    		}		
    		return answer;
    		*/
    		
    		// efficiency : 1.72ms
    		/*
    		int answer = 0;	
    		for(int i=1; i<=n; i++){
    			int temp = 0;
    			for(int j=i; j<=n; j++){
    				temp+=j;
    				if(temp == n) {
    					answer++;
    					break;
    				}else if(temp > n){
    					break;
    				}
    			}
    		}
    		return answer;
    		*/
    				
    		//efficiency : 0.11ms
    		int answer = 0;
            for (int i = 1; i <= n; i += 2) {
    			System.out.println(i);
                if (n % i == 0) {
    				System.out.println("n%i==0 . i=" + i);
    				answer++;
                }
            }
            return answer;
    		
    	}
    	
    	public static void main(String[] args){
    	
    		ExpressionOfNumber expression = new ExpressionOfNumber();
    		System.out.println(expression.solution(8));
    	}
    }

     

    단 처음에 문제풀이했을때, 임의의 수 합이 n보다 큰 경우 break를 하지 않으니까 효율성에서 0점을 맞았었다.

    합이 n보다 큰경우엔 더 계산할것도 없으니 바로 break! 해서 불필요한 계산을 줄여야 한다.

     

    다른 사람의 문제 풀이를 보며 새로운 풀이법을 보았는데 이해가 잘안되서 계속 파악중이다ㅠ

    풀이 설명에는 주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수 = 주어진 수의 홀수 약수의 개수

    -> 정수론 정리 

    라고 하는데 더 알아봐야겠다.

    '알고리즘 > 프로그래머스' 카테고리의 다른 글

    피보나치 수  (0) 2020.09.25
    N개의 최소공배수  (0) 2020.09.25
    최댓값 최솟값 찾기  (0) 2020.09.22
    카카오 - 데모 테스트  (0) 2020.09.11
    기능개발  (0) 2020.09.08
Designed by Tistory.