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 |