코딩/백준 문제 (실버)

[백준/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;
}

코드는 다음 블로그를 참고했다

https://loding.tistory.com/entry/%EB%B0%B1%EC%A4%80C%EC%96%B8%EC%96%B4-1193%EB%B2%88-%EB%B6%84%EC%88%98%EC%B0%BE%EA%B8%B0

 

브론즈 문제만 접하고 풀다가 실버문제 푸니까 차원이 다른 어려움이다.

어떻게 풀어야할지는 알겠으나 식을 도저히 못세우겠어서 답지를 보고 풀었다.

 

아직도 If문 && 다음 조건식이랑 분자 분모 구하는 식은 여전히 이해가 안된다..

그러니까 이해는 되지만 어떤 사고를 통해 생각해낸 식인지 나는 모르겠다.

꾸준함과 노력만이 살길이 되겠다.