Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[백준-Python] 10093번: 숫자 본문

🥧 Python/⚙️ 코딩테스트

[백준-Python] 10093번: 숫자

썸머몽 2023. 3. 8. 15:22
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