컴공댕이 공부일지
[c언어] 백준 (25592 바둑돌 게임) 본문
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
'문제 풀이 > 코딩 문제 풀이 모음' 카테고리의 다른 글
[c언어] 백준 (1193 분수찾기) (0) | 2023.03.20 |
---|---|
[c언어] 백준 (2577 숫자의 개수 / 13909 창문 닫기 ) (0) | 2023.03.17 |
[c언어] 백준 (14916 거스름돈 / 11720번 숫자의 합 / 2851 슈퍼마리오) ★그리디 알고리즘 / 아스키코드 문자 연산 (0) | 2023.03.16 |
[c언어] 백준 (1292 쉽게 푸는 문제) 💥💦 (0) | 2023.03.13 |
[c언어] 230310 백준 (10804 카드 역배치) (0) | 2023.03.10 |