-
숫자의 표현알고리즘/프로그래머스 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