코드연습/Python
HackerRank | Alphabet Rangoli
AI 로밧
2021. 12. 19. 21:16
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)
- string 이라는 패키지를 임포트하여 ascii_lowercase 라는 함수를 불러오면 소문자 알파벳 리스트를 쭉 불러올 수 있다.
굳이 알파벳 리스트를 만들어서 쭉 출력하겠다는 방법도 있겠지만, 괜찮은 것 같아서 사용함. - 출력하는 방법은 text : 정배열 알파벳 / reversed_text : 역배열 알파벳으로 정의하여 result라는 리스트에 추가한다.
뒤에 행을 내려가면서 다시 줄어드는 문자열이 존재하기 때문에 list로 담아두고 쓰는게 편함. - 출력물은 결과와 동일함.
쉬운 문제로 보이나, 참고 할 아이디어 없이 마냥 코딩을 하게 되면 막히는 부분이 생긴다. 아이디어를 여러개 축적해두고 필요할 때 사용하면 좋을 듯.