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

YH J·2023년 6월 18일
0

프로그래머스

목록 보기
131/168

문제 링크

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

내 풀이

1개부터 시작해서 ++ 해가면서 해당 개수의 연속되는 자연수의 합이 n이 될 수 있는지 체크해간다.
반복문으로 1부터 시작해서 1 부터 i까지 의 합 sum이 n을 넘어가기 전 까지 반복하면서 n에서 sum을 뺀 값을 i 로 나누었을 때 나머지가 없으면 n이 i개의 연속되는 자연수의 합으로 구해진다는 뜻이므로 answer을 ++한다.

내 코드

#include <string>
#include <vector>
using namespace std;

int solution(int n) {
    int answer = 0;
    for(int i = 1, sum = 1; sum <= n; i++, sum = (i*(i+1)) / 2)
    {
        if(((n - sum) % i) == 0)
            answer++;
    }
    
    return answer;
}

다른 사람의 풀이

using namespace std;

int solution(int n) {
    int answer = 0, tmp = 0;
    for(int i = 1; i <= n; i++){
        tmp = i;
        for(int j = i + 1; j <= n; j++){
            if(tmp == n) {answer++; break;}
            if(tmp + j > n) break;
            tmp += j;
        }
    }
    return answer + 1;
}

다른 사람의 풀이 해석

i 부터 i+1 i+2 ...를 더해가면서 즉 연속해서 더해가면서 n이 완성되면 answer++하고 break, n을 넘어버리면 없던거로 한다.

profile
게임 개발자 지망생

0개의 댓글