728x90
[Javascript] (프로그래머스 level 2) 숫자의 표현
💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.
내 풀이
function solution(n) {
// 1) 부분합인거 같은데 일단 투포인터로 O(n!)로 해보자.
let sum = 0;
let count = 0;
for (let p1 = 1; p1 < n; p1++) {
sum = p1;
for (let p2 = p1 + 1; p2 < n; p2++) {
sum += p2
if (sum === n) {
count++;
break;
}
if (sum > n) {
break;
}
}
}
// n 하나 있는 케이스
return count + 1
}
효율성 테스트
테스트 1 〉 통과 (31.23ms, 32.1MB)
테스트 2 〉 통과 (27.43ms, 32.2MB)
테스트 3 〉 실패 (시간 초과)
테스트 4 〉 실패 (시간 초과)
테스트 5 〉 통과 (28.02ms, 32.2MB)
테스트 6 〉 실패 (시간 초과)
- 역시 투포인터로 풀면 정답은 맞는데 시간 초과 나온다.
내 풀이 2 부분 합
function solution(n) {
// 1) 부분합인거 같은데 일단 투포인터로 O(n!)로 해보자.
let sum = 1;
let count = 0;
let p1 = 1;
let p2 = p1 + 1
//2) 투포인터 시간초과 -> 부분합 ㄱㄱ
while (p1 < n) {
while (p2 < n) {
sum += p2;
if (n === sum) {
count++;
break;
}
if (n < sum) {
break;
}
p2++;
}
sum -= p2;
sum -= p1;
p1++;
}
// n 하나 있는 케이스
return count + 1
}
- while은 정말 헷갈립니다. 부분합도 for문으로 할 수 있을 것 같은데요. 그걸 연습해야하나..?
배운 점, 느낀 점
- 푼 사람이 많이 없는 문제는 "다른 사람 풀이"에 최근 풀이를 찾기 힘드네요...
- 다들 쉬운 문제는 그냥 넘기고 중요한 문제만 푸시나봐요.. ㅠ
- 직접 풀면서 배우는 점도 있지만, 다른 사람 풀이 보는게 진짜 제대로 공부가 되더라구요. 조금 아쉽네요
'Coding Test > JavaScript' 카테고리의 다른 글
[Javascript] (백준 1969) DNA (0) | 2022.07.09 |
---|---|
[Javascript] (프로그래머스 level 1) 약수의 개수와 덧셈 (0) | 2022.07.08 |
[Javascript] (프로그래머스 level 1) 로또의 최고 순위와 최저 순위 (0) | 2022.07.06 |
[Javascript] (프로그래머스 level 2) 기능 개발 (0) | 2022.07.02 |
[Javascript] (프로그래머스 level 2) 이진 변환 반복하기 (0) | 2022.07.01 |
[Javascript] (프로그래머스 level 2) n진수 게임 (0) | 2022.07.01 |
[Javascript] (프로그래머스 level 2) 다음 큰 숫자 (0) | 2022.07.01 |
[Javascript] (프로그래머스 level 2) 최댓값과 최솟값 (0) | 2022.07.01 |
댓글