[개념] 새로운 2차원 배열의 선언 / 숫자 직사각형

김수연·2023년 2월 10일
0

코딩테스트

목록 보기
2/5

새로운 2차원 배열의 선언 / 숫자 직사각형 문제

개념

전부 0으로 초기화된 2차원 배열을 선언하는 방법

# 4 * 5 격자
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

>> 2차원 배열 선언 결과
arr_2d = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
  • list comprehension 사용하기 전
arr_2d = []
for _ in range(4):
    arr_2d.append([0] * 5) # arr_2d.append([0, 0, 0, 0, 0])
  • list comprehension 사용
arr_2d = [
    [0] * 5
    for _ in range(4)
]

n * n 크기의 격자가 전부 0으로 채워져 있는 2차원 배열

n = 4
arr_2d = [
	[0 for _ in range(n)] # arr_2d에 append하는 값
    for _ in range(n) # for문
]
print(arr_2d)

>> 출력 결과
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

n * m 크기의 격자의 경우

n, m = 4, 5
arr_2d = [
    [0 for _ in range(m)]
    for _ in range(n)
]
print(arr_2d)

>> 출력 결과
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

⁕ 2차원 배열을 출력할 경우 : 중첩 반복문(range함수)

n = 4
arr_2d = [[1, 2, 3, 4], [7, 8, 9, 10], [11, 12, 13, 14], [15, 16, 17, 18]]

for i in range(n):
	for j in range(n):
    	print(arr_2d[i][j], end=" ")
    print()

⁕ range함수 없이 리스트내 각 원소를 바로 접근하는 방법

n = 4
arr_2d = [[1, 2, 3, 4], [7, 8, 9, 10], [11, 12, 13, 14], [15, 16, 17, 18]]

for row in arr_2d:
	for elem in row:
    	print(elem, end=" ")
    print()

n * n 크기의 격자에 특정 규칙에 맞춰 출력하는 방법

# 입력
n = 3

# 출력
1 3 5
7 9 11
13 15 17
  • python 코드
# 0으로 초기화된 배열 선언
n = 3
arr_2d = [
	[0 for _ in range(n)]
    for _ in range(n)
]

# 숫자를 2씩 증가
num = 1
for i in range(n):
	for j in range(n):
    	arr_2d[i][j] = num
        num += 2
        
# 출력
for row in arr_2d:
	for elem in row:
    	print(elem, end=" ")
    print()
  • 결과
1 3 5
7 9 11
13 15 17
profile
Quien no arriesga, no gana nada

0개의 댓글