백준 1193번 문제(분수찾기) C++로 풀기

doctorsohn·2021년 1월 22일
0

백준

목록 보기
4/16

1193번 분수찾기 링크


문제 요약

지그재그 모양으로 놓여 있는 분수들의 배열에서 입력받은 수 번째의 분수를 출력한다.


코드

#include <iostream>

using namespace std;

int main()
{
  int x;  // 입력
  cin>>x;
  int count=0;  // 지그재그의 순서
  while(x>0)  // x = 떨어져 있는 거리
  {
    count++;
    x-=count;
  }
  if(count%2==0)  // 짝수면 분자가 증가
  {
    cout << count+x << "/" << 1-x;
  }
  else  // 홀수면 분모가 증가
  {
    cout << 1-x << "/" << count +x;
  }
}

풀이

코드는 https://codingplus.tistory.com/124 를 참조하여 작성되었다.

지그재그의 순서에 따라 분모와 분자의 증감이 결정되므로, 입력받은 값이 어떤 순서에 있는지 파악해야 한다.

출처=https://nhs0912.tistory.com/56

				그림 출처 = https://nhs0912.tistory.com/56
            

위 그림을 보면,
각 줄의 맨 오른쪽에 있는 숫자가 홀수냐 짝수냐에 따라 분모가 증가하고 분자가 감소하는 경우가 있고, 분자가 증가하고 분모가 감소하는 경우가 있다.
이를 이용해 지그재그의 순서를 구하고, 한 지그재그 순서의 마지막 번째가 되는 분수로부터 얼마나 떨어져 있는지 (예시: 1/4는 1/4->2/3->3/2->4/1 순서의 마지막인 4/1로부터 3만큼 떨어져 있다)를 이용해 출력값을 구한다.


주의점

지그재그 순서에 따라 분모 분자의 증감세를 알아내야 한다.

profile
하고싶은일하는게이머

0개의 댓글