2022년 11월 3일에 작성됨
https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
문제 분석
대각선이 짝수번째인지 홀수번째인지에 따라 분수의 규칙이 달라진다.
- n번째 줄에는 n개의 분수가 있다.
- 대각선 라인이 짝수이면 분자가 오름차순, 분모가 내림차순이다.
- 대각선 라인이 홀수이면 분모가 내림차순, 분모가 오름차순이다.
즉, 입력되는 값이 몇 번째 줄의 몇 번째 위치인지 찾고 위에서 찾은 규칙을 적용해준다.
소스 코드 (⭕)
n = int(input()) # 분수 번호 n 입력
line = 1 # 분수 라인 1부터 시작
while (n > line): # n이 line보다 작아질 때까지 반복
# 입력받은 n을 1씩 늘려가며 빼줌 (몇 번째 줄에 몇 번째 숫자인지 구하기)
n -= line # 각 line에서 n이 몇 번째에 위치하는지 알 수 있다.
line += 1
if line % 2 == 0: # 대각선이 짝수 라인이라면
up = n # 분자up은 오름차순
down = line-n+1 # 분자down은 내림차순
else: # 대각선이 홀수 라인이라면
up = line-n+1 # 분자up은 내림차순
down = n # 분모down은 오름차순
print(up, down, sep='/') # 구분자 sep을 이용하여 분수 출력
코드 분석
1. 분수 번호 n을 입력받고, 대각선 line을 1로 선언해준다.
2. while문으로 n이 몇 번째 줄의 몇 번째에 위치하는지 구한다.
2-1. n이 line보다 작아질 때까지 n에 1씩 늘려가며 빼준다.
2-2. line은 몇 번째 대각선인지, n은 그 대각선에서 몇 번째에 위치하는지를 나타낸다.
2-3. 예를 들어, n=8이면, 2/3 위치이다.
n=8-1=7-2=5-3=2 즉, n=2이고, line=4가 되었을 때 반복문이 멈춘다.
따라서 대각선 4번째 라인의 두 번째에 위치한다는 뜻이다.
3. if문으로 대각선 line이 짝수일 때와 홀수일 때로 나뉘는데
3-1. line이 짝수이면, 분자는 오름차순(n), 분모는 내림차순(line-n+1)이다.
3-2. line이 홀수이면, 분자는 내림차순(line-n+1), 분모는 오름차순(n)이다.
4. 마지막으로, up과 down을 구분자 '/'로 나눠 출력해준다.
end
아주 어려운 문제였지만 규칙을 알고 보니 이해는 완전 되었다.
와우 100번째 포스팅!! 🎉🎉🎉🎉🎉🎉🎉 (벨로그 기준..!)
엄청 뿌듯하다! 앞으로도 열심히 포스팅 해서 200개 채워보자 파이팅!!!
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[Python]백준_1789 : 수들의 합 (2) | 2023.10.29 |
---|---|
[Python]백준_1427 : 소트인사이드 (0) | 2023.10.29 |
[Python]백준_2857 : FBI (0) | 2023.10.27 |
[C]백준_10818 : 최소, 최대 (0) | 2023.10.27 |
[C]백준_11718 : 그대로 출력하기 (0) | 2023.10.27 |