본문 바로가기

코드연습/Python

HackerRank | Alphabet Rangoli

728x90

string 나열을 하는 방법.

 

#size 3

----c----
--c-b-c--
c-b-a-b-c
--c-b-c--
----c----

#size 5

--------e--------
------e-d-e------
----e-d-c-d-e----
--e-d-c-b-c-d-e--
e-d-c-b-a-b-c-d-e
--e-d-c-b-c-d-e--
----e-d-c-d-e----
------e-d-e------
--------e--------
  • 위와 같은 알파벳 스트링 배열을 만들고 출력하는 문제.
  • 쉬워보이나, 굉장히 많은 반복 테스트가 필요한 문제였다.

import string
def print_rangoli(size):
    # your code goes here
    alpha = string.ascii_lowercase
    
    text = ''
    result = []
    for i in range(size):
        text += alpha[size-i-1] + '-'
        reversed_text = ''
        for i in range(len(text)):
            reversed_text += text[len(text) - i - 1]
        result.append(text[:] + reversed_text[3:])
        # print(result.center(2*(2*size-1)+1,'-')[1:-1])
    for s in result:
        print(s.center(2*(2*size-1)+1,'-')[1:-1])    
    
    for i,s in enumerate(reversed(result)):
        if i == 0:
            continue
        print(s.center(2*(2*size-1)+1,'-')[1:-1])    
        
if __name__ == '__main__':
    n = int(input())
    print_rangoli(n)
  1. string 이라는 패키지를 임포트하여 ascii_lowercase 라는 함수를 불러오면 소문자 알파벳 리스트를 쭉 불러올 수 있다.
    굳이 알파벳 리스트를 만들어서 쭉 출력하겠다는 방법도 있겠지만, 괜찮은 것 같아서 사용함.
  2. 출력하는 방법은 text : 정배열 알파벳 / reversed_text : 역배열 알파벳으로 정의하여 result라는 리스트에 추가한다.
    뒤에 행을 내려가면서 다시 줄어드는 문자열이 존재하기 때문에 list로 담아두고 쓰는게 편함.
  3. 출력물은 결과와 동일함.

쉬운 문제로 보이나, 참고 할 아이디어 없이 마냥 코딩을 하게 되면 막히는 부분이 생긴다. 아이디어를 여러개 축적해두고 필요할 때 사용하면 좋을 듯.

'코드연습 > Python' 카테고리의 다른 글

HackerRank | Day 8: Dictionaries and Maps  (0) 2021.12.29
HackerRank | Capitalize!  (0) 2021.12.19
HackerRank | Text Alignment  (0) 2021.12.12
HackerRank | String Formatting  (0) 2021.12.08
HackerRank | Nested Lists 풀이  (0) 2021.12.08