https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
숫자를 입력받아 그에 해당하는 분수를 출력하는 알고리즘입니다.
제가 찾은 특징은
1. 대각선에 있는 모든 칸은 분자와 분모의 값이 같습니다.
2. 대각선의 크기는 1씩 증가합니다.
3. 짝수 대각선은 분모가 크게 시작 홀수 대각선은 분자가 크게 시작합니다.
이 세 가지를 기준으로 삼아서.
코드를 작성해 보았습니다.
[ 1 ] num 에 숫자를 입력받습니다
[ 4 ] 몇 번째 대각선인지 일기 위해서 일단은 입력받는 값보다 큰 숫자까지 표시할 수 있도록 범위를 크게 잡아줍니다.
[ 5 ~ 9 ] level 변수에 현재 대각선 번호를 넣습니다. 만약 num - i 의 값이 0보다 작아지거나 같아진다면 for 문을 종료합니다. 그게 아니라면 num 에 num - i 값을 저장합니다.
[ 11 ] 첫 번째 대각선의 분모 분자의 합은 2, 그다음은 3, 이런 식으로 해당 대각선 번호 + 1의 값이 분자 분모의 값이기 때문에 level을 +1 해줍니다.
[ 12 ~ 13 ] level이 짝수 일 경우. 분모가 크기 때문에 분모에 num 분자에 level- num
[ 14 ~ 15 ] level이 홀수 일 경우 분자가 크기 때문에 분자에 num 분모에 num-level을 해주었습니다.
어떻게 코드를 작성해야 할지 생각이 잘 안 떠올랐었는데 위 3가지 규칙을 발견하고 쉽게 코드를 작성할 수 있었습니다.
'알고리즘 > Solved_Silver' 카테고리의 다른 글
[Python Silver IV 2839] (0) | 2023.03.16 |
---|---|
[Python Silver IV 9012] (0) | 2023.03.16 |
[Python Silver V 2751] (0) | 2023.03.09 |
[Python Silver V 2941] (0) | 2023.03.09 |
[Python Silver V 1316] (0) | 2023.03.08 |