컴공댕이 공부일지

[c언어] 백준 (25592 바둑돌 게임) 본문

문제 풀이/코딩 문제 풀이 모음

[c언어] 백준 (25592 바둑돌 게임)

은솜솜솜 2023. 3. 9. 23:34
728x90

심심해서 c언어 복습도 할 겸 오랜만에...! 브론즈 몇 개 풀어봄ㅎㅅㅎ

 

흥미로웠던 문제 하나 여기에 풀이 정리해보기.

 

 

 

#1. 25592 바둑돌 게임

https://www.acmicpc.net/problem/25592

#include <stdio.h>

int main()
{
    int n=0;
    int ans=-1;
    
    scanf("%d", &n);
    
    int sum=0;
    int k=1; //몇까지의 합인지 기록하는 변수
    
    
    //주어진 바둑돌 개수보다 크고 가장 가까운 k까지의 합을 찾기.
    while(sum<n) {
        sum=(k*(k+1))/2;
        k++;
    }
    
    k-=1; //while문때문에 더 더해진 한 번은 빼.
    int x=k;
    
    
    if(k%2==0) { //짝수까지의 합
        if(n!=sum) {
             ans=0; 
        } else {
            ans=k+1;
        }
    } else { //홀수까지의 합
        if(sum==n) {
            ans=0;
        } else {
            ans=sum-n;
        }
    }
    
    printf("%d", ans);

    return 0;
}

푸앙이가 이기려면 바둑돌 총 개수가

한 10까지의 합을 쭈루룩 써 두고 바둑돌 총 개수가 어떤 경우에 이길까 차분히 생각해봄.

 

홀수 k까지의 합<=바둑돌 수 < k+1(짝수)까지의 합 이어야한다고 정리하고, 코드 작성.

 

 

정석풀이가 뭘까... 그냥 너무 수학적인 접근인가... ㅎㅅㅎ

오랜만에 c하니까 다 까묵은 것 같다.. 2-1도 파이팅!!

728x90
Comments