https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
풀이
#include <stdio.h>
int main() {
int x;
scanf("%d", &x);
int n = 1;
while (1) {
// x 범위 찾기
if (n * (n - 1) / 2 + 1 <= x && (n + 1) * n / 2 >= x) break;
else n++;
}
int i, j;
if (n % 2 == 0) { // n이 짝수일때
i = x - (n - 1) * n / 2; // 분자
j = (n + 1) - i; // 분모
}
else{ // n이 홀수일때
i = (n + 1) - j; // 분자
j = x - (n - 1) * n / 2; // 분모
}
printf("%d/%d\n", i, j);
return 0;
}
코드는 다음 블로그를 참고했다
브론즈 문제만 접하고 풀다가 실버문제 푸니까 차원이 다른 어려움이다.
어떻게 풀어야할지는 알겠으나 식을 도저히 못세우겠어서 답지를 보고 풀었다.
아직도 If문 && 다음 조건식이랑 분자 분모 구하는 식은 여전히 이해가 안된다..
그러니까 이해는 되지만 어떤 사고를 통해 생각해낸 식인지 나는 모르겠다.
꾸준함과 노력만이 살길이 되겠다.
'코딩 > 백준 문제 (실버)' 카테고리의 다른 글
[백준/2941/C언어] 크로아티아 알파벳 _ 풀이 (0) | 2023.08.23 |
---|---|
[백준/2563/C언어] 색종이 _ 풀이 (0) | 2023.08.22 |
[백준/1316/C언어] 그룹 단어 체커 _ 풀이 (0) | 2023.08.21 |
[백준/11728/C언어] 배열 합치기 _ 풀이 (0) | 2023.08.14 |
[백준/1026/C언어] 보물 _ 풀이 (0) | 2023.08.08 |