문제요약
나의 코드 및 설명
- 공백으로 구분하여 문자열을 리스트에 저장하고, 공백으로 구분한 문자열의 한 글자 한 글자를 또 하나의 임시 리스트에 저장한다.
- 임시 리스트에 저장된 문자열의 순서를 뒤집고 출력한다.
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]>을 통해 뒤집어 출력하는 방법도 있다는 것을 꼭 기억하자.
'Baekjoon > IM Level' 카테고리의 다른 글
[백준] 8320 직사각형을 만드는 방법 (브론즈2) (0) | 2023.03.21 |
---|---|
[백준] 2980 도로와 신호등 (실버4) (0) | 2023.03.21 |
[백준] 2292 벌집 (브론즈2) (0) | 2023.03.21 |
[백준] 2304 창고 다각형 (실버2) (0) | 2023.03.20 |
[백준] 1063 킹 (실버3) (2) | 2023.03.20 |