[Python] 코딩 도장 - ASCII Art N

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: ASCII Art N] - Lv.2

Write a program that lets the user enter in an odd positive integer (you may assume the input is always valid), and prints out an ASCII art letter N made using the character N.

If the input is 1, the output is:

N

If the input is 3, the output is:

N N
NNN
N N

If the input is 5, the output is:

N   N
NN  N
N N N
N  NN
N   N

If the input is 7, the output is:

N     N
NN    N
N N   N
N  N  N
N   N N
N    NN
N     N

The pattern continues on like this. The output may contain trailing spaces.

출처: https://codingdojang.com/scode/480?answer_mode=hide


[풀이]

def ASCII_Art_N(n):
    for i in range(n):
        a = [" "]*n
        a[0]="N" ; a[-1]="N" ; a[i] = "N"
        print("".join(a))
        
ASCII_Art_N(1)
ASCII_Art_N(3)
N N
NNN
N N
ASCII_Art_N(5)
N   N
NN  N
N N N
N  NN
N   N
ASCII_Art_N(7)
N     N
NN    N
N N   N
N  N  N
N   N N
N    NN
N     N

우선 입력한 n 길이의 공백 값을 가지는 리스트를 만들어 양쪽 끝을 N으로 변환한다.

그 후 첫 번째 부터 N으로 변환해 출력하는 방식을 사용하였다.

N이 1인 경우도 같은 로직으로 출력이 가능하다.

[추천 풀이]

def NN(n):
    for i in range(n):
        print(''.join(["N" if j in [0,i,n-1] else " " for j in range(n)]))
NN(5)
N   N
NN  N
N N N
N  NN
N   N

이 분도 리스트를 join()해서 출력하는 방식은 동일하지만 리스트 생성 방법에 if 문을 사용하였다.

Leave a comment