숫자의 표현

NJW·2022년 1월 5일
0

코테

목록 보기
9/170

들어가는 말

연속하는 숫자를 더해서 주어진 숫자를 얼만큼이나 만들 수 있는지 묻는 문제이다.

코드 설명

2로 나눠서(홀수는 n+1) 1부터 계속 더해주다가 값이 같으면 answer을 더해주고 주어진 값보다 크면 1부터 빼줘서 값을 맞춰주면 된다. 문제의 포인트를 생각할 수 없어서 인터넷을 찾아서 풀었다. 비슷한 문제를 푼 거 같은데 왜 기억이 나지 않는 걸까. 단순히 내 착각일까.

코드

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    
    int x = (n%2==0) ? n/2 : (n+1)/2;
    int sum = 0;
    int m = 1;
    int answer = 1;

    for(int i=1; i<=x; i++){
        sum = sum + i;
        if(sum>=n){
            while(sum > n){
                sum = sum - m++;
            }
            if(sum == n){
                    answer++;
                }
        }
    }
    
    return answer;
}
profile
https://jiwonna52.tistory.com/

0개의 댓글