본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

[java/python] 프로그래머스 Lv2. - 숫자의 표현

코딩테스트 연습 - 숫자의 표현 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

 

난이도가 높지 않은 문제였다.

 

[python]

def solution(n):
    answer=1
    for i in range(1, n+1):
        sum=i
        for j in range(i, n-1):
            sum+= j+1
            if sum > n:
                break
            if sum == n:
                answer+=1
                break
    return answer

처음에 sum의 크기를 고려하지 않았다가 효율성 테스트에서 시간초과가 발생했다.

계산 횟수를 줄이기 위해 sum이 n보다 클 경우 for문을 빠져나오게 처리하였더니

모든 케이스에서 통과할 수 있었다.

 

[java]

class Solution {
    public int solution(int n) {
        int answer=1;
        int sum=0;
        for(int i=1;i<n+1;i++){
            sum = i;
            for(int j=i;j<n-1;j++){
                sum += j+1;
                if(sum > n){
                    break;
                }
                if(sum == n){
                    answer +=1;
                    break;
                }
            }
        }
        return answer;
    }
}

 

 

 

*하단의 블로그를 참고하였는데 훨씬 간단한 코드가 있다는 것을 알았다.

수학 공식을 활용한 코드로 바로 이해하기에는 어려웠는데 참고하면 좋을 것 같다.

 

[Python] 프로그래머스 - 숫자의 표현 (연습문제/Level 2) (velog.io)

728x90