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

2020. 4. 2. 13:31프로그래머스/LEVEL 2

class Solution {
  public int solution(int n) {
      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;
              }
              if(n<temp){
                  break;
              }
          }
      }
      
      return answer;
  }
}

----------------------------------------------------------------------------------------------------------------------------

2020.06.30

 

class Solution {
    public int solution(int n) {
        int answer = 1;
        
        for(int i=1; i<n; i++){
            int sum = i;
            
            if(2*i+1>n){
                break;
            }
            for(int j=i+1; j<n; j++){
                if(sum+j == n){
                    answer++;
                    break;
                }else if(sum+j>n){
                    break;
                }else{
                    sum+=j;
                }
            }
        }
        return answer;
    }
}

 

1. 전에 풀었던건 숫자가 커지면 복잡성이 커진다.

2. i에 대하여 다음 숫자와 더한것이 n보다 커지는 순간 그다음 i들도 모두 불가능해지므로 2*i+1>n일경우 break하도록 추가하였다.