Algorithm/Java

프로그래머스 - 숫자의 표현 JAVA

고고마코드 2022. 8. 5. 00:48
반응형
12924

https://school.programmers.co.kr/learn/courses/30/lessons/12924?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


풀이

📌연속된 자연수를 더해 n을 만들 때 연속된 자연수의 시작은 자신을 제외하면 n/2 를 초과할 수 없습니다.

예를 들어 n=6일 경우

3을 초과한 숫자는 연속된 수의 처음에 올 수 없습니다.

4부터는 무엇을 더해도 6을 초과하기 때문이죠

 

🎈예시1) 6, 15

 

📝코드

public class Solution {
	public int solution(int n) {
		int count = 0, sum = 0;
		for (int i = 1; i < n / 2 + 1; i++) {
			sum = 0;
			int tmp = i;
			while (sum < n) {
				sum += tmp++;
				if (sum == n) count++;
			}
		}

		return count + 1;
	}
}

 

🎈연속된 자연수의 시작은 n/2 를 초과할 수 없으므로 반복문은 n/2 까지만

 

🎈각 연속된 자연수의 시작을 구하고, 순서대로 더해 n과 같은 값이 나온다면 count에 추가

만약 n을 초과하면 반복문을 빠져나온다.

 

⚡️정확성 테스트

테스트 1 통과 (0.01ms, 72.5MB)
테스트 2 통과 (0.05ms, 75.3MB)
테스트 3 통과 (0.08ms, 74.4MB)
테스트 4 통과 (0.07ms, 74.9MB)
테스트 5 통과 (0.03ms, 74.1MB)
테스트 6 통과 (0.02ms, 70.9MB)
테스트 7 통과 (0.08ms, 73.5MB)
테스트 8 통과 (0.05ms, 69.2MB)
테스트 9 통과 (0.02ms, 77.9MB)
테스트 10 통과 (0.07ms, 75.7MB)
테스트 11 통과 (0.08ms, 74.3MB)
테스트 12 통과 (0.05ms, 72MB)
테스트 13 통과 (0.06ms, 74.8MB)
테스트 14 통과 (0.04ms, 75.8MB)
테스트 15 통과 (0.02ms, 71.8MB)
테스트 16 통과 (0.02ms, 75.7MB)
테스트 17 통과 (0.02ms, 72.7MB)
테스트 18 통과 (0.02ms, 76.4MB)

 

 

⚡️효율성 테스트

테스트 1 통과 (1.16ms, 52MB)
테스트 2 통과 (0.66ms, 51.8MB)
테스트 3 통과 (0.76ms, 52.3MB)
테스트 4 통과 (0.81ms, 52.5MB)
테스트 5 통과 (0.85ms, 52.1MB)
테스트 6 통과 (0.97ms, 52MB)
반응형