코딩/백준 문제 (실버)
[백준/1193/C언어] 분수찾기 _ 풀이
룻밤
2023. 8. 19. 19:04
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문 && 다음 조건식이랑 분자 분모 구하는 식은 여전히 이해가 안된다..
그러니까 이해는 되지만 어떤 사고를 통해 생각해낸 식인지 나는 모르겠다.
꾸준함과 노력만이 살길이 되겠다.