본문 바로가기

알고리즘/백준

1193번 분수찾기

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
int main()
{
    int n;
    cin >> n;
 
    int sum = 0;
    int num;
    for (int i = 1; i <= n; i++)
    {
        if (sum >= n)
            break;
        else
        {
            sum += i;
            num = i;
        }
    }
    if (num % == 0)
        cout << n - (sum - num) << "/" << num - (n - (sum - num)) + << '\n';
    else
        cout << num - (n - (sum - num)) + << "/" << n - (sum - num) << '\n';
    return 0;
}
cs

먼저 문제를 이해해 보면 규칙을 발견할 수 있다. 분모가 2일때는 두번, 3일때는 세번까지 대각선으로 나타내어진다.

그래서 푸는 방법을 그 값을 모두 더해서 받아온 값 n, 즉 몇번째까지 인지와 비교해서 sum값이 더 커지게 되면 반복문을 중지한다.

중지하기 바로 전 인덱스를 모두 sum에 더하고 그 인덱스를 num에 저장을 해놓는다. 


이렇게 받아놓은 num값은 분모가 짝수일때는 처음, 홀수일때는 마지막에 해당한다. 그 이유는 매번 분모가 제일 큰 것부터 시작하는 것이 아닌 지그재그로 분수가 몇번째인지를 판단하기 때문이다.


'알고리즘 > 백준' 카테고리의 다른 글

2775번 부녀회장이 될테야  (0) 2018.10.10
10250번 ACM 호텔  (0) 2018.10.10
2292번 벌집  (0) 2018.10.10
1316번 그룹 단어 체커  (0) 2018.10.09
2941번 크로아티아 알파벳  (0) 2018.10.09