(프로그래머 Lv.2) 숫자의 표현.java

쉬운 목차

문제

https://school.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이 일련의 자연수로 표현될 수 있는 방법의 수를 반환하는 해를 완성하십시오.

제한

  • n은 10,000 이하의 자연수이다.

해결

  1. 1부터 시작하여 n까지 연속된 숫자를 더합니다(덧셈 결과가 n보다 크면 false).
  2. 참이면 응답 증가
  3. 시작 숫자를 1씩 증가
  4. 시작 번호가 n/2가 될 때까지 위의 과정을 반복합니다.

public class Solution {
	public static int solution(int n) {
		int answer = 1;
		boolean check = true;
		for (int startNum = 1; startNum <= n / 2; startNum++) {
			int sum = 0;
			int j = startNum;
			while (true) {
				// startNum부터 연속하며 더한다
				sum += j;
				j++;
				if (sum == n) { // n을 만들 수 있다면 true
					check = true;
					break;
				} else if (sum > n) { // n을 만들 수 없다면 false
					check = false;
					break;
				}
			}
			if (check == true) { // n을 만들 수 있다면 answer++
				answer++;
			}
		}
		return answer;
	}
}



아~ 이런 구조라면 당연히 효율이 떨어지겠죠? 했는데 한방에 합격했네요 ㅎㅎ