[문제]
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.
- 1 + 2 + 3 + 4 + 5 = 15
- 4 + 5 + 6 = 15
- 7 + 8 = 15
- 15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[풀이]
class Solution {
public int solution(int n) {
int cnt=1;
for(int i=1;i<n-1;i++) {
int sum=0;
for(int j=i;j<n;j++) {
sum+=j;
if(sum==n) {
cnt++;
break;
}
}
}
return cnt;
}
}
첫 번째 제출 코드이다. 놀랍게도 3분만에 문제 풀고 채점까지 받았다.
그러나.. 정확도는 만점맞고 시간 초과가 발생해서 효율성 빵점;

놀랍게도 그 또한 5분만에 해결되었다. 바로 sum이 n보다 커지는 상황에 바보처럼 break를 걸어주지 않은 것... ^^
오늘 12시 전에 코딩테스트 한 개 풀 생각으로 너무 급하게 제출한 것 같다.
앞으로는 꼼꼼하게 보고 제출해야겠다는 깨달음을 얻었다..
처음 봤을 때는 어렵다는 생각이 들지만 막상 코드를 짜면 for 2번 돌리고 끝나서.. 왠지 허무했다.
다른 사람들 코드를 참고하며 더 좋은 방법을 모색해야겠다.
어쨌든 최종 코드!
class Solution {
public int solution(int n) {
int cnt=1;
for(int i=1;i<=n/2;i++) {
int sum=0;
for(int j=i;j<n;j++) {
sum+=j;
if(sum==n) {
cnt++;
break;
} else if(sum>n) break;
}
}
return cnt;
}
}'👩🏻💻 코테' 카테고리의 다른 글
| 프로그래머스 Lv.1 : 로또의 최고 순위와 최저 순위 🅾️ (0) | 2024.03.20 |
|---|---|
| 프로그래머스 Lv.1 : 이웃한 칸 🅾️ (0) | 2024.03.20 |
| 프로그래머스 Lv.1 : 체육복 🅾️ (0) | 2024.03.14 |
| 백준 B1 10798 : 세로읽기 🅾️ (0) | 2024.03.11 |
| 프로그래머스 Lv.2 : 타겟 넘버 🅾️ (0) | 2024.03.10 |