https://www.acmicpc.net/problem/1193
정해진 순서대로 분수가 변한다. 입력받은 순서의 해당하는 분수를 출력해야 한다.
#include <iostream>
#include <string>
using namespace std;
int main(){
// 분모 먼저 +1
// 그 후 분모 분자의 숫자가 뒤바뀔때까지 증감 반복.
// 숫자가 뒤바뀌었다면 분자 +1
// 위 과정 반복 후 뒤바뀌면 다시 분모 +1
int x;
cin >> x;
int numerator = 1; // 분자
int denominator = 1; // 분모
int check = 0; // 0이면 분모 증가. 1이면 분자 증가.
for (int i=1;i<x;i++){
if(check == 0 && numerator == 1){
denominator += 1;
check = 1;
} else if(check == 1 && denominator == 1) {
numerator += 1;
check = 0;
} else{
if (check == 0){
numerator -= 1;
denominator += 1;
} else{
numerator += 1;
denominator -= 1;
}
}
}
cout << numerator << '/' << denominator;
}
처음에는 분모를 먼저 증가시키고, 분자와 분모의 숫자를 증감시켜 분모가 1이되면 다시 분자를 증가시키고, 다시 증감을 거쳐 분자가 1이되면 분모를 증가시키고 ...
위 과정을 반복하면 된다.
check를 통해 분자와 분모의 증감을 결정한다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 11653번 소인수분해 [C++] (0) | 2023.11.27 |
---|---|
백준 2869번 달팽이는 올라가고 싶다 [C++] (1) | 2023.11.26 |
백준 2292번 벌집 [C++] (0) | 2023.11.26 |
백준 2903번 중앙 이동 알고리즘 [C++] (1) | 2023.11.26 |
백준 2720번 세탁소 사장 동혁 [C++] (1) | 2023.11.26 |