sooleeandtomas

[day14] 백준 9093번 스택 (단어 뒤집기) python 본문

코딩테스트 알고리즘/스택

[day14] 백준 9093번 스택 (단어 뒤집기) python

sooleeandtomas 2022. 10. 11. 00:31

 

나의 풀이

아래에 설명된 arr[::-1]의 문법을 이용해서 단어를 뒤집어버렸다.

간단하지만 아쉽게도 stack에 어울리는 풀이가 아닌 것 같다. 

N = int(input())

for i in range(N):
  sen = input().split(' ')
  arr = []
  for a in list(sen):
    b = a[::-1] #단어를 뒤집어서 저장해줌
    arr.append(b)
  print((' ').join(arr))

 

다른 사람의 풀이

stack에 더 어울리는 풀이 같아서 가져왔다.

띄어쓰기를 중심으로 움직인다.

띄어쓰기가 아니면 stack에 append,

띄어쓰기가 맞으면 stack에 있는 내용을 pop하며 print해준다. + 띄어쓰기도 한번 print해줌 

N = int(input())

for i in range(N):
	string = input()
    string += ' '
    stack = []
    for j in string:
    	if j !== ' ' :
        	stack.append(j)
            # [h,e,l,l,o,w,...]
        else: # 띄어쓰기가 있을 때!!!
        	while stack:
            	#print(stack)
            	print(stack.pop(), end='')
                #wolleh
            print(' ', end='')
            

#1
#Hellow this
#['H', 'e', 'l', 'l', 'o', 'w']
#w['H', 'e', 'l', 'l', 'o']
#o['H', 'e', 'l', 'l']
#l['H', 'e', 'l']
#l['H', 'e']
#e['H']
#H ['t', 'h', 'i', 's']
#s['t', 'h', 'i']
#i['t', 'h']
#h['t']
#t 

출처


python arr::-1 문법

arr = [0,1,2,3,4,5]
arr[::2] # [0]부터 끝까지 두 칸 간격으로 출력
#[0,2,4]

arr[1::2] # [1]부터 끝까지 두 칸 간격으로 출력
#[1,3,5,7,9]

arr[::-1] # 끝에서부터 처음까지 -1칸 간격으로
#[5,4,3,2,1,0]

arr[::-2] # 끝에서부터 처음까지 -2칸 간격으로
#[5,3,1]

arr[2::-1] # [2]부터 처음까지 -1칸 간격으로
#[2,1,0]

arr[2::-2] # [2]부터 처음까지 -2칸 간격으로
#[2,0]

arr[1:4:2] # [1] 부터 [4] 까지 두 칸 간격으로
[1,3]

print(arr) # 실제 배열이 변하진 않는다.
#[0,1,2,3,4,5]

 

python print(end="") 문법

python print할 때에 end="" 와 sep=""를 사용할 수 있다.

print(1,2,3, end="!")
#1 2 3!

print(1,2,3, sep="!")
#1!2!3!

 

Comments