baekjoon 1193
https://www.acmicpc.net/problem/1193
아 예제 입출력 드럽게많네ㅡㅡ
Idea
우선 문제에서 패턴을 찾아야 한다.
ㅋㅋㅋㅋㅋㅋㅋ그림판 ㅈㅅ
간단한 패턴은 다음과 같다.
위 그림을 2차원 배열이라고 생각하지 말고 1차원 배열로 쭉 늘어뜨려보자.
[1/1] , [1/2] , [2/1] , [3/1] , [2/2] , [1/3] , [1/4], [2/3] ...
이렇게 된다. 잘 보면 규칙을 찾을 수 있다.
화살표가 아래를 향하면 분자는 증가, 분모는 감소하고 위를 향하면 분자는 감소, 분모는 증가한다.
이 화살표에 번호를 매겨보면
즉, 짝수인 화살표는 분자는 증가, 분모는 감소하고 홀수인 화살표는 분자는 감소, 분모는 증가한다.
변수 i는 몇 번째 대각선인지 홀수, 짝수를 판별한다.
변수 x는 x번째 분수를 출력하기 위한 변수이다.
변수 count는 i번째 화살표 안에 있는 차수 중 가장 높은 수이다.
변수를 이렇게 잡고 짝수 화살표에서 두 개, 홀수 화살표에서 두 개 잡고 연산해보니 문제가 풀렸다..!
Code
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int x, i;
int count = 1;
scanf("%d", &x);
for (i = 1; x > count; ) {
count += ++i;
}
if (i % 2 == 0) {
printf("%d/%d", i - (count - x), 1 + (count - x));
}
else {
printf("%d/%d", 1 + (count - x), x - (count - i));
}
}
굿
Author And Source
이 문제에 관하여(baekjoon 1193), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@p3pwp3p/baekjoon-1193저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)