• Home
  • About
    • Yerim Oh photo

      Yerim Oh

      Happy and worthwhile day by day :)

    • Learn More
    • Email
    • LinkedIn
    • Instagram
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

[1009] (파이썬) CODE TREE_Lv.2 Intermediate Low: 지그재그로 숫자 채우기

22 Jan 2020

Reading time ~2 minutes

Table of Contents
  • 문제
    • 입력 형식
    • 출력 형식
    • 입출력 예제
  • 풀이과정
    • 1) 배열 선언하기
    • 2) 열 번호가 짝수인 경우
    • 3) 열 번호가 홀수인 경우
    • 4) 출력
    • overview
  • 구현
  • 결과

문제

[지그재그로 숫자 채우기]
풀러 가기

n * m크기의 직사각형에 숫자를 0부터 순서대로 1씩 증가시키며 왼쪽 위에서부터 시작하여 다음과 같이 지그재그 모양으로 숫자들을 쭉 채우는 코드를 작성해보세요.

image

입력 형식

n과 m이 공백을 사이에 두고 주어집니다.

  • 1 ≤ n, m ≤ 100

출력 형식

숫자로 채워진 완성된 형태의 n * m 크기의 사각형을 출력합니다. (숫자끼리는 공백을 사이에 두고 출력합니다.)

Constraints:
시간 제한: 1000ms
메모리 제한: 80MB

입출력 예제

입력:
4 2

출력: 
0 7 
1 6 
2 5 
3 4 
입력:
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

풀이과정

지그재그 모양의 규칙을 파악해 보자

인덱스가 0부터 시작하는 것을 고려하면, 열(col) 번호가 0부터 시작했을 때를 기준으로 아래와 같은 규칙을 갖고있다.

  • 열 번호가 짝수인 경우: 한칸씩 내려가며 숫자 채움
  • 열 번호가 홀수인 경우: 한칸씩 올라가며 숫자 채움

이를 배열을 시용하면 쉽게 풀릴 수 있음
배열 더 배우러 가기

  • 열 번호 0부터 m-1까지 1씩 증가해나가며 이차원 배열을 채워나감

1) 배열 선언하기

n, m = tuple(map(int, input().split()))
answer = [
    [0 for _ in range(m)]
    for _ in range(n)
]

2) 열 번호가 짝수인 경우

for col in range(m):
    if col % 2 == 0:
        for row in range(n):
            answer[row][col] = count
            count += 1

3) 열 번호가 홀수인 경우

for col in range(m):
    if col % 2 != 0:
        for row in range(n - 1, -1, -1):
            answer[row][col] = count
            count += 1

4) 출력

for row in range(n):
    for col in range(m):
        print(answer[row][col], end = ' ')
    print()

overview

20210804_074506294


구현

# 변수 선언 및 입력
n, m = tuple(map(int, input().split()))
answer = [
    [0 for _ in range(m)]
    for _ in range(n)
]

count = 0


for col in range(m):
    if col % 2 == 0:
        for row in range(n):
            answer[row][col] = count
            count += 1
    else:
        for row in range(n - 1, -1, -1):
            answer[row][col] = count
            count += 1

# 출력
for row in range(n):
    for col in range(m):
        print(answer[row][col], end = ' ')
    print()

결과

image 쨔쨘



Coding test Share Tweet +1