[BOJ] 1193 "분수찾기" 문제 풀이 & 소스 코드 With C/C++

반응형
반응형

#INFO

난이도 : BRONZE1

출처 : 1193번: 분수찾기 (acmicpc.net)


#SOLVE

1. N이 몇 번째 대각선에 위치하는지 구한다.

우선, 입력받은 N이 몇 번째 대각선에 위치하고 있는지 구해야 한다. 예를 들어 입력받은 N이 10이라면 N의 값은 4/1로, 4번째 대각선에 위치한다.

반복문을 돌려서 N의 값이 i보다 작아진 시점에 해당하는 i번째 대각선에 N번째 원소가 존재한다.

	//N이 몇 번째 대각선에 존재하는 지 판별
	int i = 1;
	while (N > i) {
		N -= i;
		i++;
	}

2. N이 존재하는 대각선이 홀수번째인지, 짝수번째인지 구한다.

대각선이 홀수번째 대각선인지, 짝수번째 대각선인지에 따라서 식이 달라진다.

하지만 어차피 짝수번째 대각선의 형태는 홀수번째와 대칭이기에, 분모와 분자만 바꾸어서 출력해 주면 된다.

	if (i % 2 == 1) {
		cout << i + 1 - N << '/' << N << endl;
	}
	else {
		cout << N << '/' << i +1 - N << endl;
	}

 

#include <iostream>
using namespace std;

int main() 
{
	int N;
	cin >> N;
	
	//몇 번째 대각선 인지 판별
	int i = 1;
	while (N > i) {
		N -= i;
		i++;
	}
	
	if (i % 2 == 1) {
		cout << i + 1 - N << '/' << N << endl;
	}
	else {
		cout << N << '/' << i +1 - N << endl;
	}
	return 0;
}

반응형

댓글

Designed by JB FACTORY