본문 바로가기
Python/코딩테스트

다중반복문 - 알파벳 출력하기2

by Nanki 2025. 3. 4.

정수 N이 주어질때, 아래 규칙에 맞게 영문자를 출력하라.
단, Z다음에는 A가 나와야 한다.

ex)
N= 2
A B
   C
N = 3
A B C
   D E
      F

1) 공백과 알파벳 모두 포함하면, 행과 열이 같은 행렬이다.
> 이때 행(i)가 열(j)보다 클때, 공백을 출력하고 그외의 경우 알파벳을 출력한다.
> i와 j의 조건문에 따라 i>j일떄는 공백을, i<=j일때 알파벳을print 될 것이다.
2) i<=j 조건일때, 알파벳 순서대로 출력된다.
즉, 행과 열의 규칙에 상관없이 아스키 문자에 대응한 숫자가 차례대로 증가하여 출력된다.
> cnt 카운터 변수를 사용한다.

 

n = int(input())

cnt = ord("A")

for i in range(n) :
    for j in range(n) :
        if i > j :
            print(' ', end=' ')
        else :
            print(chr(cnt), end = ' ')
            cnt += 1
            if cnt > ord("Z") :
                cnt = ord("A")
    print()

 

 

< 또 다른 풀이>
위의 풀이에서는 1)번의 i와 j를 비교하여 공백 또는 알파벳 출력을 결정하였다.
여기서는 행(i)에 따라 열의 알파벳 출력 횟수를 결정한다. 즉, range에 i가 들어간다.
> i가 range(n)을 가질 때, 공백은 i만큼, 알파벳은 n-i개 만큼 반복하는 2개의 반복문을 만든다. 
> n-i인 이유는 한행에서 출력되는 열의 갯수(n)에서 행의 갯수(i)를 빼는 의미로, 행(i)가 증가할 때마다 공백이 늘어나는 규칙이 있기 떄문이다.

 

n = int(input())

cnt = ord("A")

for i in range(n) :
    for j in range(n) :
        if i > j :
            print(' ', end=' ')
        else :
            print(chr(cnt), end = ' ')
            cnt += 1
            if cnt > ord("Z") :
                cnt = ord("A")
    print()

 

문제 출처 : 코드트리

https://www.codetree.ai/trail-info

반응형