프론트 공부/자바스크립트

[Javascript] 2차원 배열 transpose 하기 (+python)

캥거루 2021. 5. 31. 04:10

모 기업 코딩 테스트에서 요긴하게 써먹었던 파이썬 코드가 있다.

 

2차원 배열을 *(asterisk)로 unpacking 한 다음에 다시 zip으로 묶으면 transpose가 되는 기가 막힌 코드였는데,

다음과 같다. (하지만 내부가 튜플 타입으로 변경된다는 함정이 있음.)

arr = [[1,2,3],[4,5,6]]
print(list(zip(*arr)))
# [(1,4),(2,5),(3,6)]

진짜 된다니까요?

 

같은 방법으로, 스터디원과 이야기를 나누던 중, js 에는 해당 코드가 없을까 해서 그대로 실험을 해봤다.

파이썬의 zip과 같은 기능을 하는 코드는 stackoverflow에서 찾아왔다. 

unpacking 하는 기능은 js 에서  '...'(구조 분해 할당, destructuring assignment) 표현식을 쓰면 된다.

(zip 함수 출처 => https://stackoverflow.com/questions/4856717/javascript-equivalent-of-pythons-zip-function)

arr = [[1,2,3],[4,5,6]]
zip= rows=>rows[0].map((_,c)=>rows.map(row=>row[c]))
zip([...arr])
// [[1,4],[2,5],[3,6]]

이것도 진짜 된다니까요?

 

신기하다.

실전에서 쓸 일이 있을진 모르겠는데, 코테에서라도 요긴하게 써먹길 바라며.