import sys
word = list(sys.stdin.readline().rstrip())
i = 0
start = 0
while i < len(word): #word로 입력한 문자열의 길이가 i보다 크다면 계속 반복해라.
if word[i] == "<": #word의 문자열이 "<" 이면,
i += 1 #i에 1씩 더하고,
while word[i] != ">": #word의 문자열이 ">"가 나오기 전까지
i += 1 #i에 1씩 더해라.
i += 1 #닫힌 괄호를 만난 후 인덱스를 하나 증가시킨다.
elif word[i].isalnum(): #word의 문자열이 알파벳이거나 숫자일 경우,
start = i
while i < len(word) and word[i].isalnum(): #i가 문자열의 길이보다 작고 알파벳이거나 숫자라면,
i += 1 #계속해서 i에 1씩 더해라.
tmp = word[start:i] #i가 여전히 알파벳이거나 숫자이지만, 더 이상 문자열의 길이보다 작지 않고 같다면, tmp는 처음 알파벳 or 숫자가 나온 지점부터 문자열의 길이까지이다.
tmp.reverse() #tmp의 순서를 바꿔 뒤집는다.
word[start:i] = tmp #tmp를 다시 변수선언한다.
else: #문자열이 괄호도 아니고 알파,숫자도 아닌 공백이라면,
i += 1 #i에 1씩 더해라.
print("".join(word)) #공백없이 문자열을 붙여서 나열해라.
https://it-neicebee.tistory.com/43
bar_razor = list(input()) #괄호열
answer = 0 #쇠막대기의 갯수 카운트
st = [] "("가 들어가 있을 리스트 st
for i in range(len(bar_razor)): #괄호 하나씩 반복해 검사
if bar_razor[i] == '(': #괄호가 "("이면,
st.append('(') #해당 괄호를 st에 넣는다.
else: #괄호가 ")"이면,(=두 가지 경우이다. 상반된 괄호열 "()"이 나와 레이저를 표현하는지, 연속된 괄호열 "))" 이 나와 쇠막대기를 표현하는지,)
if bar_razor[i-1] == '(': #"("가 나와 레이저일 경우,
st.pop() #st에서 "("를 하나 빼내(= st.pop()한 "(" + i에서 반복 중인 ")" 는 레이저이므로)
answer += len(st) #i+1이 "(" 이 나와 st에 있는 "(" 들은 모두 쇠막대기이므로 len(st)는 쇠막대기의 갯수와 같다.
else: #")"가 나와 쇠막대기일 경우,
st.pop() #st에 있던 "("를 빼내
answer += 1 #쇠막대기의 갯수에 하나 늘린다.
print(answer)
N = int(input()) #입력값의 개수
numbers = list(map(int, input().split())) #입력된 값을 리스트에 넣은 리스트
stack = [0] #stack은 for문을 통해 numbers 리스트의 입력된 요소값을 하나씩 검사하기 위해 순서를 메김.
answer = [-1] * N #answer는 [-1, -1,.. -1]의 형태로 오큰수를 담는 리스트로 '-1'인 이유는 오큰수가 없는 값에 대해 '-1'을 부여하기 때문이다.
for i in range(1, N): #for문을 통해 1부터 N-1까지 i에 대입해 아래를 반복해라.
while stack and numbers[stack[-1]] < numbers[i]: #stack에 값이 있어서 True를 부여받고, numbers의 stack의 마지막 값 번째와 비교하는 이유는 현재 stack = [0]인 stack리스트에 마지막에 1부터 시작하는 i를 리스트에 요소값으로 추가하기 때문에 다음 for문을 반복할 때, while문을 실행시키기 위해선 마지막 값으로 들어온 요소값이 numbers의 i번째 해당되는 값과 비교해야 되기 때문이다.
answer[stack.pop()] = numbers[i] #numbers[i-1]의 오큰수가 나왔다면, stack의 마지막 요소값을 제거한 후, answer의 해당 요소값번째는 곧 number[i-1]의 오큰수, numbers[i]이기 때문에 answer의 요소값을 제거하고, 이를 변수선언한다.
stack.append(i) #만약, 현재 i가 오큰수를 구하지 못했다고 하더라도 stack에 현재 인덱스i를 추가해야 한다. 그래야 이어서 i+1의 오큰수를 구할 수 있고, i+1의 오큰수를 구하면 자동으로 i의 오큰수도 구하게 되기 때문이다.
print(*answer)
https://rabo0313.tistory.com/entry/Python-list%EC%95%9E%EC%97%90-%EB%B6%99%EC%9D%80-unpacking
from collections import Counter
from sys import stdin
N = int(input())
numbers = list(map(int, stdin.readline().split()))
numbers_count = Counter(numbers)
stack = [0]
answer = [-1] * N
for i in range(1, N):
while stack and numbers_count[numbers[stack[-1]]] < numbers_count[numbers[i]]:
answer[stack.pop()] = numbers[i]
stack.append(i)
print(*answer)