heyjinn.dev
헤이지니
heyjinn.dev
  • 분류 전체보기 (66)
    • 알고리즘 💻 (21)
      • BOJ (12)
      • 요약정리 (6)
      • 과제 (3)
    • BackEnd 🌱 (13)
      • spring (13)
    • 📚study✨ (12)
      • Docker & Kubernetes (8)
      • 기타 (4)
    • ComputerScience 🐥 (8)
      • 운영체제 (0)
      • 컴퓨터네트워크 (8)
      • 데이터베이스 (0)
    • 에러 해결 👍 (6)
    • 후기 🔥 (4)
      • 세미나 (2)
      • 인턴 (0)
      • 프로젝트 (0)
    • 기타 (0)
    • 일상 (1)

인기 글

태그

  • 순열
  • 프로그래머스
  • AWS
  • 자바
  • 백트래킹
  • EC2
  • dfs
  • Python
  • 조합
  • 두 원 사이의 정수 쌍

최근 글

05-17 22:09
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
heyjinn.dev
[Python] 2차원 배열 돌리기
알고리즘 💻/요약정리

[Python] 2차원 배열 돌리기

2023. 10. 14. 23:55

2차원 배열 돌리기는 직접 구현하거나, zip을 이용하여 간편하게 바꾸는 2가지 방법이 있습니다.

1. 직접 구현하기 

[[1, 2, 3], [4, 5, 6], [7, 8, 9]] 와 같은 배열을 한 번 돌리면, [[7, 4, 1], [8, 5, 2], [9, 6, 3]] 와 같은 결과를 얻을 수 있습니다. 180, 270도 회전을 원하면 rotate 함수를 여러 번 호출하면 됩니다. 

def rotate(graph):
  n = len(graph)
  m = len(graph[0])
  result = [[0]* n for _ in range(m)]

  for i in range(n):
    for j in range(m):
      result[i][j] = graph[n-1-j][i]
  return result
  
# [[7, 4, 1], [8, 5, 2], [9, 6, 3]]

2. zip을 이용하여 구현하기 

zip은 인덱스가 같은 요소들을 잘라서 리스트로 반환해줍니다. 예를 들어 ["a", "b"]와 [1, 2]라는 리스트가 있으면, [('a', 1), ('b', 2)]를 반환합니다. 

arr = ["a", "b"]
num = [1,2]
ans = list(zip(arr, num))

# [('a', 1), ('b', 2)]

 

이것을 이용해 리스트를 뒤집은 뒤, zip 함수를 이용하면 회전한 배열을 얻을 수 있습니다. 

이때, zip type으로 반환되므로 list나 dict와 같은 자료형으로 변환해야 합니다. 결과값을 확인해보면, 리스트 안에 튜플로 값을 반환하는 것을 알 수 있습니다. 

graph = [[1,2,3],[4,5,6],[7,8,9]]

reversed_graph = graph[::-1]
rotated = list(zip(*reversed_graph))
print(rotated)

#[(7, 4, 1), (8, 5, 2), (9, 6, 3)]
저작자표시 (새창열림)
    '알고리즘 💻/요약정리' 카테고리의 다른 글
    • [백트래킹] 조합, 순열, 중복조합, 중복순열 (재귀이용)
    • 정렬 알고리즘 요약정리
    • [Algorithm] 백트래킹(Backtracking)
    • [Algorithm] 벡터(Vector)
    heyjinn.dev
    heyjinn.dev
    안녕하세요 ~ https://github.com/toki0411 부족하지만 열심히 공부중입니다 :D

    티스토리툴바