프로그래머스 Lv.2 코딩테스트
[프로그래머스 Lv.2] 숫자의 표현
하다블
2022. 9. 20. 18:12
반응형
문제는 다음과 같습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 코드는 다음과 같습니다.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 1;
for(int i{1};i<n;i++)
{
int temp{i};
for(int j{i+1};j<n;j++)
{
temp+=j;
if(temp==n)
{
answer++;
break;
}
else if(temp>n)
{
break;
}
}
}
return answer;
}
처음에 이 문제를 접할 때 헷갈렸던 부분은 "몇 개의 숫자로 표현해야 하는가?"였습니다.
예시에 15를 각각 연속된 자연수 4개,3개,2개,1개 로 설명함으로써 처음에는 숫자를 분할하는 방법에 대해 고민했으나
이 문제의 포커스를 "분할하는 방법"이 아닌 "연속된 자연수"로 바꾸니 쉽게 해결할 수 있었습니다.
문제에도 나와 있듯이 n=n 으로 경우가 무조건 하나는 존재하기 때문에 answer의 초기값은 1로 시작합니다.
이후 연속된 자연수를 계속 더해서 n이 되는지 확인하는 방법으로 결과를 구했습니다. 또한 n이 되거나 n을 초과하는 경우에는 이후의 값을 볼 필요가 없으므로 break를 통해 시간을 절약했습니다.
반응형