본문 바로가기

공부/코딩테스트

(1일 1코딩)프로그래머스 숫자의 표현[JAVA]

728x90

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

 

코딩테스트 연습 - 숫자의 표현

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할

programmers.co.kr

 

오늘의 코드 리뷰는 프로그래머스 숫자의 표현

 

입력받은 자연수 n을 연속된 숫자로 표현하는 방법이 몇가지인가 구하는 문제

 

class Solution {
    public int solution(int n) {
        int answer=0, cnt=1;
		n--;
		while(n>0){
			cnt++;
			n=n-cnt;
			if(n%cnt==0) answer++;
		}
        
        return answer+1;
    }
}

이 문제는 제가 이중 포문으로 1부터 더해서 풀어보려고 했는데 시간초과 오류나서

 

이전에 구매해서 듣던 알고리즘 인강에 비슷한 문제가 있길래 참고해서 풀었어요

 

강사님이 ㅠㅠ 여러분들 이 문제 보자마자 이중포문 돌려서 1부터 더해가면서 풀었죠? 하는데 뜨끔ㅋㅋㅋ

 

이 문제는 인강에서 구하고자 하는 방갯수?로 계속 나누면서 떨어지면 가능한 문제라고 설명해주셨어요

 

처음에 while문 안에서 cnt가 2일때 n-cnt를 해주고 나누어 떨어지면 연속된 두 숫자로 구현 가능하다 라는 코드네요!

 

제가 인강 내용을 그대로 옮길수가 없어서 자세하게 설명은 못드리지만^^;; 강사님이 잘 설명해주셔서 바로 풀어볼 수 있었네요

 

프로그래머스 문제는 자기자신 숫자도 포함이기 때문에 최종 정답에 +1해줬습니다.