풀기 전 알고갈 개념
새로운 2차원 배열 선언과 활용
전부 0으로 초기화된 2차원 배열 만들기
- n * m 크기의 격자 초기화
1) 0으로 초기화된 배열 만들기
list comprehension
이용
n, m = 4, 5
arr_2d = [
[0 for _ in range(m)]
for _ in range(n)
]
output
print(arr_2d)
>> 출력 결과
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
- 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()
output
print(arr_2d)
>> 출력 결과
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
문제
[숫자 직사각형]
풀러 가기
정수 n과 m의 값을 입력받아 숫자로 이루어진 직사각형을 출력하는 프로그램을 아래 예를 참고하여 작성해보세요.
단, 2차원 배열을 꼭 사용하여 해결해보세요.
예)
n에 3을 m에 5를 입력받는 경우
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
입력 형식
첫 번째 줄에 세로변의 길이 n과, 가로변의 길이 m이 공백을 사이에 두고 주어집니다.
- 1 ≤ n, m ≤ 100
출력 형식
주어지는 n과 m의 값에 따른 숫자를 입출력 예제와 같이 출력합니다.
Constraints:
시간 제한: 1000ms
메모리 제한: 80MB
입출력 예제
입력:
4 3
출력:
1 2 3
4 5 6
7 8 9
10 11 12
입력:
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 = tuple(map(int, input().split()))
arr_2d = [
[0 for _ in range(m)]
for _ in range(n)
]
count = 1
for row in range(n):
for col in range(m):
arr_2d[row][col] = count
count +=1
for row in range(n):
for col in range(m):
print(arr_2d[row][col], end = ' ')
print()
overview
결과
쨔쨘