본문 바로가기

개발지/코테

[프로그래머스] 코테연습 - 숫자의 표현(lv.2)

- 내 방법 풀이

  • 자연수 n을 연속한 자연수로 표현하는 방법의 갯수를 표현 하는 방법을 구하는 문제. '연속'이 핵심 힌트 였다.
  • 연속한 자연수를 만들기 위해 반복문을 사용하였다. 첫번째 숫자를 정하는 반복문 안에 더해줄 숫자를 정하는 이중 반복문을 작성했다. 연속한 자연수를 더해주다가 n과 같아지면 answer 증가 또는 초과되면 반복문을 종료하였다.
  • 최근 풀은 문제들 중에 평이한 난이도의 문제였다.
import java.util.*;

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

- 다른 사람 방법 풀이

  • 정수론으로 푼 풀이. 설명으로는 주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수는 주어진 수의 홀수 약속의 개수와 같다고 한다.
  • 다른 방법들은 나의 풀이와 비슷했다.
import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 1; i <= n; i += 2) 
            if (n % i == 0) 
            answer++;
        return answer;
    }
}