0516 개발일지

Yesol Lee·2022년 5월 16일
0

개발일지 - 2022

목록 보기
55/187

오늘 한 일

  • 사내 뉴스레터 : 봄 사진대회 수상작 뽑기, 레이아웃 변경 및 검수
  • 자바 스프링 프로젝트 조금 (취소됨)
  • 백준 파이썬 알고리즘 문제풀기

알고리즘

최근 시간날 때 알고리즘 풀이를 시작했다. 파이썬으로 문제를 풀어보는 건 처음이라 왕초보 문제부터 하고 있는데 파이썬 문법이나 함수에 익숙해지기 좋은 것 같다. 아주 쉬운 내용이지만 내가 미쳐 몰랐던 것을 정리해보려 한다.

백준 10093 숫자

양의 정수 2개를 입력받아 1. 입력받은 두 수를 제외한 두 수 사이 정수 개수와 2. 두 수 사이 정수를 한 줄에 공백으로 구분하여 출력 하는 문제였다.

처음 풀었을 때 출력되는 값은 맞는데 통과를 못해서 보니 2번 답을 한 줄에 출력해야 되는데 해당 처리를 안 한 것을 알았다. print 함수에 end=' '를 직접 지정했다.

for i in range(y+1, x):
	print(i, end=' ')

그런데 그래도 통과되지 않아 풀이를 검색했는데, 문제를 조금 더 주의깊게 읽었으면 알 수 있었던 부분이었다.

  • 양수인 두 수가 주어질 때, 반드시 먼저 나온 수가 작다는 말이 없었다.
  • 따라서 a, b 두 수 사이 정수의 개수를 구할 때 b-a-1 이런 식을 사용해 구하면, a가 더 큰 수일 경우 음수가 나오게 된다.
  • 개수는 음수일 수 없으니 0으로 처리해 주었더니 통과할 수 있었다.
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과 list 차이점

리스트에 map 사용하기
파이썬 sorted 함수 정리 및 예제

백준 사이트는 입력값부터 직접 처리해주어야 한다는 게 특징이다. 그래서 처음에 좀 헤맸었다. 한 줄에 여러 개의 입력값을 받을 때 지금까지는 list(map(int, input().split()))로 받아 배열 인덱스로 접근하는 방법을 많이 사용했었다.

arr = list(map(int, input().split()))
print(arr[0])

그런데 다른 사람의 풀이를 보면 map 객체를 여러 개의 변수에 바로 받거나, map을 바로 sorted 함수의 인수로 넣는 경우가 있었다.
그래서 찾아보니, map은 두번째 인자로 받은 배열의 개별값을 첫 번째 인자로 받은 함수로 처리해주는 함수로, 그냥 print하면 map 객체 정보를 나타낸다.

profile
문서화를 좋아하는 개발자

0개의 댓글