python : 내가 헷갈린 map()과 string

solee·2022년 5월 30일
0

Python

목록 보기
7/16

프로그래머스를 풀고 있는데, 다른 사람들의 풀이를 보니 역시나 아주 짧고 간결하고 효과적이다. 그 중에 map()에서 내가 써 보지 않았던 방식으로 효율적인 코드를 작성했기에 이리저리 살펴보다가 간략하게 기록해두려 한다.

list(map(int, "123 345 567".split()))
# [123, 345, 567] 

list(map(int, "12345"))
# [1, 2, 3, 4, 5]

자릿수에 관련된 문제들을 풀며 만났다.

내가 매일 사용했던 방식은 위의 방식이다. 보통 map()에 대해 검색하면 나오는 방식이기도 하다. 빈칸이 포함된 str(보통은 input을 사용한다)을 분리해서 int로 변환해 저장한 것이다.

그렇게만 사용해 왔는데, 아래의 방식을 만났다.
원래 했던 방식을 기준으로 생각하면 "12345" 자체가 한번에 int로 변환되어 결과가 [12345]가 될 것이라고 생각했는데 그러지 않은 것이다. 마치 for문의 범위에 str 변수를 집어넣으면 각 인덱스에 맞는 자리의 str이 도는 것처럼!

for i in "12345":
  print(i)
  # 1
  # 2
  # 3
  # 4
  # 5

for문의 용법을 생각해 보면 map()의 방식이 자연스럽게 흘러나왔어야 하는데, split()된 결과물을 변환하는 것에 익숙해져서 기본적인 걸 놓쳤다.

그러니까... list(map(int, "123 345 567".split()))의 결과물이 [123, 345, 567]라는 사실을 놓친 거다.

map()에 배열을 집어넣었으니 각 배열의 요소를 변환해서 반환한 것이고,
str 변수를 집어넣으면 str을 배열로 생각해 철자 하나하나가 배열의 요소로 작동하기 때문에 자릿수 하나하나를 변환해서 반환하는 것이다.




와! 바보 같아!

매번 고민하고 생각하면서 코드를 짜야겠다는 생각을 다시 했다.
열심히 공부해야지!

profile
DA DA DA

0개의 댓글