본문 바로가기
코딩 테스트/프로그래머스

[프로그래머스 - JavaScript] Lv.2 숫자의 표현

by 오엥?은 2023. 2. 9.
반응형
  • 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12924

 

프로그래머스

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

programmers.co.kr

 

  • 풀이
function solution(n) {
    
    let count = 0; // 몇 갠지 세는 count (나중에 return 해 줄 정답을 담을 변수)
    
    for (let j = 1; j <= n; j++) { // 1에서 n까지 점점 커지는 j
        
        let num = 0;
        
        for (let i = j; i <= n; i++) { // j부터 n까지 점점 커지는 i
            num += i;
            
            if (num == n) count++; // 차례대로 더하다가 num이 n과 같아지면 count 올리기 
        }
    }
    return count;
}

2단계 도전해봤다. 

2단계는 처음이라서 넘 쫄아가지고 정답률 가장 높은 거부터 풀기로 했다. 

정확성 테스트는 통관데

?

 

그래서 다시 했다. 주석 적다가 깨달았다.

function solution(n) {
    
    let count = 0; // 몇 갠지 세는 count (나중에 return 해 줄 정답을 담을 변수)
    
    for (let j = 1; j < n; j++) { // 1에서 n-1까지 점점 커지는 j (n은 무조건 count 되어야하니까 그냥 뺌)
        
        let num = 0;
        
        for (let i = j; i < n; i++) { // j부터 n-1까지 점점 커지는 i
            num += i;
            
            if (num == n) {
                count++; // 차례대로 더하다가 num이 n과 같아지면 count 올리기 
                break; // num과 n이 같아지면 바로 반복문 끝내기
            }
            else if (num > n) break; // num이 n보다 커지면 바로 반복문 끝내기
        }
    }
    return count + 1; // n = n 경우는 무조건이니까 count에 1을 더한 걸 return 
}

조건 충족하면 break로 반복문 빠져나게해서 불필요한 계산을 안 하게 만들었다.

 

 

반응형