728x90
반응형
https://www.acmicpc.net/problem/1193
#include<stdio.h>
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main(void) {
//1 1
//2 2
//3 3
//4 4
//홀수일때 1부터
//짤수일때 그 수부터
//14일때
//13 1
//11 2
//8 3
//4 4
// 일단 빼고 남은 것에서 계산해서 산출하기
long long int X;
cin >> X;
int flag = 0;
if (X == 1) {
flag = 1;
}
int i = 1;//+1 더해서 사용해야하는 변수
for (i = 1; i <= 100000; i++) {
X -= i;
if (X <=0) {//일단 최대한 근처로 가기
X += i;
break;
}
}
if (i % 2 == 0) {//짝수
//분자가 i
int j = 1;
for (; j < X; j++) {
i--;
}
cout << j << '/' <<i << '\n';
}
else if(i%2==1) {//홀수
//분모가 i
int j = 1;
for (; j <X; j++) {
i--;
}
cout << i << '/' << j << '\n';
}
return 0;
}
이문제를 풀다 보니 좀 정신 없게 풀이가 된것 같은데 여기서 포인트는
일단 어떤 방식으로 접근하나 이것이 중요합니다. 짝수와 홀수 인 포인트에서
분모가 1로 시작하는지 분자가 1로 시작하는지 포인트를 잡아야하고
저는 일단 그 분모가 1 ,2, 3, 4, 5 또는 분자가 1,2,3,4,5로 시작하는 포인트를 찾기위해서
반복문을 통해 1-10만까지 빼면서 음수가 되는 지점을 포인트로 찾아서 남은 것 만큼
그냥 계산을 해서 구현을 했습니다. 물론 더 간단한 방법이 있습니다.
일단은 너무 피곤해서 구현력이 조금 저조한것 같은데 일단 이런식으로 풀 수도 있구나 생각해주세요.
728x90
반응형
'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글
16236 아기상어 (0) | 2020.08.26 |
---|---|
17822 원판 돌리기 (0) | 2020.08.25 |
1181 단어 정렬 (0) | 2020.08.24 |
1076 저항 (0) | 2020.08.24 |
프로그래머스 k번째 수 (0) | 2020.08.20 |
댓글