[백준]1193. 분수찾기

2023. 7. 2. 15:13코딩테스트/백준

[문제]

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

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

[풀이]

1. sum을 통해 1,2,3 ... n까지 더해가며 sum이 n보다 크거나 같으면 break로 반목문을 빠져나감

2. 이때의 sum은 i(같은 줄에서 가장 큰 수)가 포함되었으므로 sum에서 i를 빼고 1을 더해서 구해야 하는 n이 있는 줄에서 가장 첫번째의 순서를 구한다.

3. i에 1씩 더해가며 n번째가 i로부터 얼마나 떨어져있는지(count)를 구한다.

4. 지그제그 모양이므로 i가 짝수인 경우는 가로축부터, 홀수인 경우는 세로축부터 시작하는 걸 고려해 print한다.

[코드]

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)

{
	long long i = 0, n, sum = 0, count = 0;

	scanf("%llu", &n);

	for (i = 1; i <= n; i++)
	{
		sum += i;
		if (sum >= n)
			break;
	}
	
	sum = sum - i + 1;
	while (n > sum) {
		count++;
		sum++;
	}

	if (i % 2 == 0) {
		printf("%lld/%lld", count + 1, i - count);
	}
	else {
		printf("%lld/%lld", i - count, count + 1);
	}

	return 0;

}