Baekjoon/IM Level

[백준] 9093 단어 뒤집기 (브론즈1)

hellosonic 2023. 3. 21. 12:38

문제요약

나의 코드 및 설명

  • 공백으로 구분하여 문자열을 리스트에 저장하고, 공백으로 구분한 문자열의 한 글자 한 글자를 또 하나의 임시 리스트에 저장한다.
  • 임시 리스트에 저장된 문자열의 순서를 뒤집고 출력한다.
t = int(input())
for _ in range(t):
    string = list(input().split())
    for i in range(len(string)):
        temp_list = list(string[i])
        temp_list.reverse()
        for j in range(len(temp_list)):
            print(temp_list[j], end="")
            if j == len(temp_list)-1:
                print(" ",end="")
        if i == len(string)-1:
            print()

다른 코드 및 설명 01 (리스트[::-1]) 

  • 입력한 문자열을 공백으로 구분하여 리스트에 저장하고, 저장된 각 리스트 요소들을 [::-1]을 통해 역순으로 뒤집는다.
t = int(input())
for i in range(t):
    string = list(input().split())
    for words in string:
        print(words[::-1], end = " ")
    print()

다른 코드 및 설명 02 (자료구조 - 스택)

  • 자료구조 - 스택을 이용한 풀이방법이다. 다른 분의 코드를 참고했는데, 풀이 과정이 숙달해볼 필요가 있을 것 같아 작성했다.
  • 문자열을 입력 받고, 공백을 만나기 전까지 스택 리스트에 저장한다. 만약 공백을 만난다면 스택 리스트가 빌 때까지 pop() 함수를 통해 꺼내어 출력한다. 꺼내어 출력한 뒤엔, 공백을 출력하여 띄어쓰기를 표현한다.
  • string += " " : 입력한 문자열에서 공백을 만나야지만 지금까지 스택 리스트에 저장된 글자들을 출력할 수 있으므로, 입력한 문자열 끝에도 공백을 붙인다. 
t = int(input())

for _ in range(t):
    string = input()
    string += " "
    stack = []
    for i in string:
        if i != " ":
            stack.append(i)
        else:
            while stack:
                print(stack.pop(), end = "")
            print(" ", end = "")
    print()

피드백

이번 문제는 백준 17413 단어뒤집기2 문제를 대비하여 풀어보았다. <리스트[::-1]>을 활용하여 문제를 풀었어야하는데 다른 방법으로 문제를 풀어버렸다.. 문자열을 역순으로 출력하는 방법에는 문자열의 단어들을 리스트에 하나씩 넣고, <리스트.reverse()>를 통해 뒤집어 출력하는 방법도 있지만, <리스트[::-1]>을 통해 뒤집어 출력하는 방법도 있다는 것을 꼭 기억하자.