본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 18883번 : N M 찍기

by 빛밤하늘 2021. 6. 25.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

18883번: N M 찍기

총 N개의 줄을 출력해야 한다. 각 줄에는 M개의 정수를 공백 한 칸으로 구분해 출력해야 한다. 1번 줄에는 1부터 M까지, 2번 줄에는 M+1부터 2×M까지, ..., N번 줄에는 (N-1)×M+1부터 N×M까지 출력해야

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 첫째 줄에 자연수 N, M을 공백으로 구분해 입력합니다.
# 두 수는 1,000보다 작거나 같은 자연수입니다.
# 각각 정수형으로 변환합니다.
N, M = map(int, stdin.readline().split(' '))
# 출력할 숫자를 저장하는 변수를 선언합니다.
# 1부터 출력하므로 1로 초기화합니다.
number = 1

# NXM 형식으로 출력하므로 먼저 행의 개수 N만큼 반복합니다.
for i in range(N):
    # 열의 개수 M만큼 반복합니다.
    for j in range(M):
        # 현재 열의 인덱스가 M-1보다 작다면
        if j < M - 1:
            # 숫자를 출력하고 오른쪽에 공백을 만듭니다.
            print(number, end=' ')
        # 현재 열의 인덱스가 M-1과 같다면
        # 즉, 열의 마지막 인덱스라면
        elif j == M - 1:
            # 숫자를 출력하고 자동 줄 바꿈은 하지 않습니다.
            print(number, end='')

        # 출력하는 숫자에 1을 더해줍니다.
        number += 1
    # 한 행의 출력이 다 끝나면 \n으로 줄바꿈을 합니다.
    print('\n', end='')

결과

 

첫 번째로 제출에서는 모든 숫자들을 출력할 때 print(number, end=' ')를 통해 출력했습니다.

그러면 모든 줄의 마지막 숫자를 출력하고 나서 공백이 생기는데

문제에서는 공백이 있으면 안된다는 조건이 있었습니다.

그래서 틀렸습니다 결과가 나오게 되었습니다.

 

제출하고 코드의 채점 상황을 보고 있는데 채점 속도가 매우 느렸습니다.

맞았습니다 결과가 나오고, 실행 시간을 보니 756ms로 다른 문제를 풀었을 때보다 매우 느린 속도였습니다.

다른 사람들의 파이썬 결과들을 보니 400ms대의 코드를 제출하신 고수분들도 있었습니다.

고수분들의 코드를 보고 더 공부해야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글