[파이썬/python] 백준 10093번 : 숫자 (🥉2)

https://www.acmicpc.net/problem/10093

 

10093번: 숫자

두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오.

www.acmicpc.net

풀이

num=list(map(int,input().split()))
num.sort()

n = []

for i in range(num[0],num[1]):
    n.append(i)
if num[0] == num[1]:
    print(0)
else:
    print(len(n)-1)
    print(*n[1:])

유의할 점은 둘의 숫자가 같으면 0이 출력되어야 한다.

그래서 처음에 이를 고려하지 않아서

print(len(n)-1)
print(*n[1:])

만 써서 오답이 나왔다..

따로 if문을 써줘서 둘의 값이 같을 경우 0을 출력하게 하였다.

 

다른 사람의 풀이

n,m = map(int,input().split())
arr = [i for i in range(min(n,m)+1,max(n,m))]
print(len(arr))
if arr:
    print(*arr)

max와 min을 이용하고, i for i~~를 이용하여 바로 리스트에 값을 넣어주어서

알아서 둘의 값이 같을 경우 0이 출력된다

 

arr = [i for i in range(min(n,m)+1,max(n,m))] 을 풀어서 쓴다면

arr = []
for i in range(min(n,m)+1,max(n,m):
arr.append(i)

위의 코드 같은 기법을 list comprehension(리스트 컴프리헨션, 리스트 축약)라고 한다고 한다.

 

 

comment