[1193] 분수 찾기 C++ 백준

pyungjong·2024년 2월 21일

C++ 백준

목록 보기
8/8

백준[1193]

문제

1193번

풀이

1/1 1/2 1/3 1/4 1/5 …
2/1 2/2 2/3 2/4 … …
3/1 3/2 3/3 … … …
4/1 4/2 … … … …
5/1 … … … … …
… … … … … …

  • 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수이다.
  • 나열된 분수들의 순서를 파악한다.
  • 대각선의 순서에 따라 분수의 숫자가 1개, 2개, ... 순차적으로 증가한다
  • 지그재그 순서로 움직여 홀수와 짝수 대각선의 분수의 순서가 다르다.

구현

  1. 주어진 숫자에 맞는 분수가 몇번째 대각선에 존재하는지 파악한다.
    (i가 대각선의 순서 +1로 반환)
int N;

	cin >> N;

	int i = 1;
	while (N > 0) {
		N -= i;
		i++;
	}
  1. 짝수 대각선과 홀수 대각선 구분
    • 짝수 대각선은 1/2 -> 2/1, 1/4 -> 2/3 -> 3/2와 같은 순서
    • 홀수 대각선은 3/1 -> 2/2 -> , 5/1 -> 4/2 -> 3/3과 같은 순서
	int a, b;
	// 짝수
	if (i % 2 != 0) {
		b = 1 - N;
		a = i - b;
	}
	// 홀수
	else{
		a = 1 - N;
		b = i - a;
	}

전체 코드

#include <iostream>

using namespace std;

int main(void) {

	int N;

	cin >> N;

	int i = 1;
	while (N > 0) {
		N -= i;
		i++;
	}
	
	int a, b;
	// 짝수
	if (i % 2 != 0) {
		b = 1 - N;
		a = i - b;
	}
	// 홀수
	else{
		a = 1 - N;
		b = i - a;
	}

	cout << a << "/" << b;

	return 0;
}

주의

1. i++; 코드로 인하여 (대각선+1) 반환
2. 짝수와 홀수의 대각선의 순서가 다른 점

profile
코린이

0개의 댓글