파이썬 SW문제해결 기본 - LIST 2
01 2차원 List
(1/2)
01. 2차원 List
1️⃣ 2차원 List 구조
◾2차원 List 구조
1) 1차원 List를 묶어놓은 List(즉, List를 요소로 가지는 List이다.)
2) 2차원 이상의 다차원 List는 차원에 따라 Index를 선언한다.
3) 2차원 List의 선언 : 세로길이(행의 개수), 가로길이(열의 개수)를 필요로 한다.
EX) 2행 4열의 2차원 List
arr = [[0,1,2,3],[4,5,6,7]]
아래 그림과 같다.
2️⃣ List 초기화
◾ List 초기화
1차원 리스트
arr = [0,0,0,0,0]
arr = [0] * 5 #[0,0,0,0,0]
arr = [i for i in range(2,9) if i%2==0] #[2,4,6,8]
2차원 리스트
brr = [[1,2,3],[1,2,3],[1,2,3]]
brr = [[1,2,3]] * 3 #[[1,2,3],[1,2,3],[1,2,3]]
brr = [[1,2,3] for i in range(3)] #[[1,2,3],[1,2,3],[1,2,3]]
brr = [[i,j] for i in range(3) for j in range(2)] #[[0,0],[0,1],[1,0],[1,1],[2,0],[2,1]]
3️⃣ 2차원 List 입력 받기
◾ 2차원 List 입력 받기
#예시 1
n, m = map(int, input(),split())
mylist = [0 for _ in range(n)]
#mylist = [0] * n
#위 두 코드는 같은 결과를 나타낸다.
for i in range(n):
mylist[i] = list(map(int, input().split()))
#예시 2
n, m = map(int, input().split())
mylist = []
for i in range(n):
mylist.append(list(map(int, input().split())))
#예시 3
n, m = map(int, input().split())
mylist = [list(map(int, input().split())) for _ in range(n)]
4️⃣ 2차원 List에서 데이터의 위치 찾기
◾ 2차원 List에서 원하는 데이터의 위치 찾기
# 예시 1
n, m = map(int, input().split())
newlist = []
mylist = [0 for _ in range(n)]
for i in range(n):
mylist[i] = list(map(int, input().split()))
for j in range(m):
if mylist[i][j] == 1:
newlist.append([i,j])
# 예시 2
n, m = map(int, input().split())
mylist = [list(map(int, input().split())) for _ in range(n)]
newlist = [(i,j) for i in range(n) for j in range(m) if mylist[i][j] == 1]
5️⃣ 2차원 List의 순회
◾ List 순회 : n X m List의 n*m개의 모든 원소를 빠짐없이 조사하는 방법
1) 행 우선 순회 - List의 행을 우선으로 List의 원소를 조사하는 방법
#행 우선 조회
arr = [[0,1,2,3], [4,5,6,7], [8,9,10,11]]
n = len(arr) #행의 개수
m = len(arr[0]) #열의 개수
for i in range(len(arr)): # i : 행의 좌표
for j in range(len(arr[i])): # j : 열의 좌표
print(arr[i][j]) #필요한 연산 수행
출력 : 0 1 2 3 4 5 6 7 8 9 10 11 12
2) 열 우선 순회 - List의 열을 우선으로 List의 원소를 조사하는 방법
#열 우선 조회
arr = [[0,1,2,3], [4,5,6,7], [8,9,10,11]]
n = len(arr) #행의 개수
m = len(arr[0]) #열의 개수
for j in range(len(arr[0])): #j : 열의 좌표
for i in range(len(arr)): #i : 행의 좌표
print(arr[i][j]) #필요한 연산 수행
출력 : 0 4 8 1 5 9 2 6 10 3 7 11
2차원 List의 행 우선 조회, 열 우선 조회을 알아보았다. 그렇다면 지그재그로 조회할 수는 없을까? 아니면 미로찾기를 하듯이 특정 요소의 상하좌우를 조회할 수는 없을까?
이어지는 다음 글에서는 2차원 리스트의 고급 조회, 전치 행렬에 대해 다룬다.
[SWEA]파이썬 SW문제해결 기본 - LIST 2 : 2차원 List (2/2)
'SWEA() > Intermediate_Learn' 카테고리의 다른 글
[SWEA]파이썬 SW문제해결 기본 - LIST 2 : 부분 집합 (1/2) (0) | 2021.11.22 |
---|---|
[SWEA]파이썬 SW문제해결 기본 - LIST 2 : 2차원 List (2/2) (0) | 2021.11.10 |
[SWEA]4835. 파이썬 SW문제해결 기본 - LIST 1 : 구간합 (0) | 2021.11.03 |
[SWEA]4834. 파이썬 SW문제해결 기본 - LIST 1 : 숫자 카드 (0) | 2021.11.01 |
[SWEA]4831. 파이썬 SW문제해결 기본 - LIST 1 : 전기버스 (0) | 2021.10.18 |