2차원 배열 활용

2022. 10. 28. 02:29파이썬(Python)

반응형

1. 0으로 초기화된 2차원 배열 생성

- list comprehension 이용해서 n*m 크기의 배열 생성

 

n,m=map(int,input().split())

arr=[[0 for _ in range(m)] for _ in range(n)]
print(arr)

결과

>> 3 4
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

2. 2차원 배열 출력

- 중첩 반복문을 활용하여 range를 사용

arr=[[1,2,3,4], [5,6,7,8], [9,10,11,12]]
for i in range(3):
    for j in range(4):
        print(arr[i][j],end=' ')
    print()

결과

1 2 3 4 
5 6 7 8
9 10 11 12

 

- range 없이 리스트 내 각 원소를 바로 접근.

- 2차원 배열의 원소는 각 이 되고, 각 행에 있는 원소들을 조회하며 값을 출력

arr=[[1,2,3,4], [5,6,7,8], [9,10,11,12]]
for i in arr:
    for j in i:
        print(j,end=' ')
    print()

결과

1 2 3 4 
5 6 7 8
9 10 11 12

Q) 숫자 직사각형

- 자연수 n, m을 입력

- n*m 크기의 배열에 1부터 n*m까지 차례대로 출력

 

n,m=map(int,input().split())

arr=[[0 for _ in range(m)] for _ in range(n)]
num=1

for i in range(n):
    for j in range(m):
        arr[i][j]+=num
        num+=1

for i in arr:
    for j in i:
        print(j,end=' ')
    print()

- 0으로 초기화한 2차원 배열 arr을 생성

- num의 초기값은 1. arr의 각 원소들은 순서대로 탐색하여 num을 더한다.

- num을 더한 후, num은 1 증가

 

결과

>> 4 3
1 2 3 
4 5 6
7 8 9
10 11 12

Q) 두 배열의 연산

- 자연수 n을 입력.

- n*n 배열을 2개 생성.

- 첫 번째 배열 생성 후, 두 번째 배열 생성하기 전 엔터키를 입력 후 생성

- 사칙연산을 선택하여 연산을 진행한 후의 배열을 출력

- 나눗셈은 정수 나눗셈으로 진행

 

n=int(input())
arr1=[list(map(int,input().split())) for _ in range(n)]
input()
arr2=[list(map(int,input().split())) for _ in range(n)]

print('1. 덧셈 \n2. 뺄셈 \n3. 곱셈 \n4. 나눗셈')
num=int(input('번호를 선택.'))

arr3=[[0 for _ in range(n)] for _ in range(n)]

if num==1:
    for i in range(n):
        for j in range(n):
            arr3[i][j]=arr1[i][j]+arr2[i][j]

elif num==2:
    for i in range(n):
        for j in range(n):
            arr3[i][j]=arr1[i][j]-arr2[i][j]

elif num==3:
    for i in range(n):
        for j in range(n):
            arr3[i][j]=arr1[i][j]*arr2[i][j]

elif num==4:
    for i in range(n):
        for j in range(n):
            arr3[i][j]=arr1[i][j]//arr2[i][j]

for i in arr3:
    for j in i:
        print(j,end=' ')
    print()

결과

>> 3
>> 1 2 3
>> 7 8 9
>> 13 15 19
>>
>> 2 6 8
>> 12 15 18
>> 7 6 5
1. 덧셈
2. 뺄셈
3. 곱셈
4. 나눗셈
>> 번호를 선택.2
-1 -4 -5
-5 -7 -9
6 9 14

Q) 2차원 배열 비교하기

- 자연수 n, m을 입력하여 2개의 n*m 크기의 배열 생성

- 첫 번째 배열 생성 후 두 번째 배열 생성하기 전 엔터키 입력

- 다른 값의 위치를 출력 ex) 2행 2열

 

n,m=map(int,input().split())

arr1=[list(map(int,input().split())) for _ in range(n)]
input()
arr2=[list(map(int,input().split())) for _ in range(n)]


for i in range(n):
    for j in range(m):
        if arr1[i][j]!=arr2[i][j]:
            print(f'{i+1}행 {j+1}열')

결과

>> 3 4
>> 1 4 5 2
>> 3 3 5 2
>> 3 6 2 1

>> 3 4 5 2
>> 3 3 2 2
>> 3 6 2 1
1행 1열
2행 3열

Q) 지그재그 모양 출력

- 자연수 n, m 입력. n*m 크기의 2차원 배열 생성

- 세로로 지그재그 모양으로 출력

 

결과

>> 5 5
0 9 10 19 20 
1 8 11 18 21
2 7 12 17 22
3 6 13 16 23
4 5 14 15 24

 

n,m=map(int,input().split())

arr=[[0 for _ in range(m)] for _ in range(n)]

num=0
cnt=0
for i in range(m):
    for j in range(n):
        arr[num][i]=cnt
        if i%2==0: num+=1
        else: num-=1
        cnt+=1
    if i%2==0: num-=1
    else: num+=1

for i in arr:
    for j in i:
        print(j,end=' ')
    print()

- 0번째 열부터 진행된다고 할 때, 짝수 열이면 행이 증가하면서 숫자가 1 증가

- 홀수 열이면 행이 증가하면서 숫자가 1 감소

- num은 행의 index

- 열이 1 증가할 때, 짝수 열에서 홀수 열로 이동하면 num 증가

- 홀수 열에서 짝수 열로 이동하면 num 감소

 

>> 5 5
0 9 10 19 20 
1 8 11 18 21
2 7 12 17 22
3 6 13 16 23
4 5 14 15 24

 

'파이썬(Python)' 카테고리의 다른 글

문자열  (0) 2022.11.03
2차원 배열 활용 2  (0) 2022.11.03
2차원 배열  (0) 2022.10.26
리스트 최대 최소 2  (0) 2022.10.25
리스트 최대, 최소  (0) 2022.10.23