728x90
10093번: 숫자
두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오.
www.acmicpc.net
📌 풀이
두 수가 주어졌을 때 첫 줄에는 두 수 사이에 있는 수의 개수를 출력하고
둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다.
여기서 문제는 두 수가 같을 때를 고려해야 한다.
예를 들어 A, B라면 첫째 줄은 B-A-1, 둘째 줄은 for i in range(A, B+1)까지 구할 수 있겠으나
만약에 A, B 둘다 2라면 첫째 줄에는 0이 둘째 출에는 아무것도 출력되지 않아야 한다.
1. A=B 일 경우
2. A != B일 경우
- A > B
- A < B
이렇게 총 3가지 경우로 if문을 잡거나, min/max를 사용하는 방법이 있다.
✅ 코드
A, B = map(int, input().split())
if A == B :
count = 0
num = " "
print(count)
print(num)
elif A < B :
count = B-A-1
print(count)
for i in range(A+1, B) :
print(i, end=" ")
elif A > B :
count = A-B-1
print(count)
for i in range(B+1, A) :
print(i, end=" ")
이걸 간략하게 표현하면 다음과 같다.
A, B = map(int, input().split())
large = max(A, B)
small = min(A, B)
count = large-small-1
if count != 0:
print(count)
else:
print(0)
for i in range(small + 1, large):
print(i, end=" ")
A, B 중에 더 큰 것을 large라고 하고 더 작은 것을 small이라고 한다.
갯수는 large - small -1 로 두되, 두 수가 같다면 0을 출력시키고 그렇지 않다면 그대로 count를 출력한다.
for문으로 사이의 수를 출력할 때에는 작은 것 +1부터 큰것 -1 까지 하면 된다.
max와 min을 사용하면 더 짧아진다.
728x90
'🥧 Python > ⚙️ 코딩테스트' 카테고리의 다른 글
[백준-Python] 9713번: Sum of Odd Sequence (0) | 2023.03.08 |
---|---|
[백준-Python] 9653번: 스타워즈 로고 / 9654번: 나부 함대 데이터 / 10170번: NFC West vs North / 10171번: 고양이 / 10172번: 개 (0) | 2023.03.08 |
[백준-Python] 9316번: Hello Judge (0) | 2023.03.08 |
[백준-Python] 8393번: 합 (0) | 2023.03.08 |
[백준-Python] 7891번: Can you add this? (0) | 2023.03.08 |