최근 시간날 때 알고리즘 풀이를 시작했다. 파이썬으로 문제를 풀어보는 건 처음이라 왕초보 문제부터 하고 있는데 파이썬 문법이나 함수에 익숙해지기 좋은 것 같다. 아주 쉬운 내용이지만 내가 미쳐 몰랐던 것을 정리해보려 한다.
양의 정수 2개를 입력받아 1. 입력받은 두 수를 제외한 두 수 사이 정수 개수와 2. 두 수 사이 정수를 한 줄에 공백으로 구분하여 출력 하는 문제였다.
처음 풀었을 때 출력되는 값은 맞는데 통과를 못해서 보니 2번 답을 한 줄에 출력해야 되는데 해당 처리를 안 한 것을 알았다. print 함수에 end=' '
를 직접 지정했다.
for i in range(y+1, x):
print(i, end=' ')
그런데 그래도 통과되지 않아 풀이를 검색했는데, 문제를 조금 더 주의깊게 읽었으면 알 수 있었던 부분이었다.
b-a-1
이런 식을 사용해 구하면, a가 더 큰 수일 경우 음수가 나오게 된다.a, b = map(int, input().split())
x = max(a, b)
y = min(a, b)
print(x - y - 1 if x > y else 0)
for i in range(y+1, x):
print(i, end=' ')
리스트에 map 사용하기
파이썬 sorted 함수 정리 및 예제
백준 사이트는 입력값부터 직접 처리해주어야 한다는 게 특징이다. 그래서 처음에 좀 헤맸었다. 한 줄에 여러 개의 입력값을 받을 때 지금까지는 list(map(int, input().split()))
로 받아 배열 인덱스로 접근하는 방법을 많이 사용했었다.
arr = list(map(int, input().split()))
print(arr[0])
그런데 다른 사람의 풀이를 보면 map 객체를 여러 개의 변수에 바로 받거나, map을 바로 sorted 함수의 인수로 넣는 경우가 있었다.
그래서 찾아보니, map은 두번째 인자로 받은 배열의 개별값을 첫 번째 인자로 받은 함수로 처리해주는 함수로, 그냥 print하면 map 객체 정보를 나타낸다.