Bonfire
99클럽 코테 스터디 27일차 TIL Leetcode Using a Robot to Print the Lexicographically Smallest String 본문
알고리즘/99 코테 스터디
99클럽 코테 스터디 27일차 TIL Leetcode Using a Robot to Print the Lexicographically Smallest String
pecan 2024. 6. 25. 00:01문제 및 조건
풀이 및 코드
아이디어 : 가장 사전순으로 빠른 것을 작다고 표현할 때(아스키 코드로 생각해도 됨), s를 미리 탐색해서, dictionary 형식에 각 알파벳이 몇 개씩 존재하는지 체크한 후, s를 다시 앞에서 부터 하나씩 스택에 넣어준다. 이때 뒤에 남은 알파벳들 중 가장 작은 값이 스택의 마지막 값보다 크면, 스택의 마지막 값이 가장 작은 값 이므로 스택에서 마지막값을 pop 해서 paper에 적어준다. 이 과정을 반복하고, 남은 t의 값들을 reverse해서 더해준다.
class Solution:
def robotWithString(self, s: str) -> str:
dic={}
p=""
for ss in s:
if dic.get(ss):
dic[ss]+=1
else:
dic[ss]=1
stack=[]
for i in range(len(s)):
fast_alphabet=min(dic.keys())
while stack and stack[-1]<=fast_alphabet:
p+=stack.pop()
if s[i]==fast_alphabet:
p+=s[i]
else:
stack.append(s[i])
dic[s[i]]-=1
if dic[s[i]]==0:
del dic[s[i]]
return p+"".join(stack)[::-1]
'알고리즘 > 99 코테 스터디' 카테고리의 다른 글
99클럽 코테 스터디 29일차 TIL Leetcode Minimum Time to Visit Disappearing Nodes (0) | 2024.06.26 |
---|---|
99클럽 코테 스터디 28일차 TIL Leetcode Minimum Add to Make Parentheses Valid (0) | 2024.06.26 |
99클럽 코테 스터디 26일차 TIL Leetcode Continuous Subarrays (0) | 2024.06.23 |
99클럽 코테 스터디 25일차 TIL Leetcode Minimum Number of Coins for Fruits (0) | 2024.06.22 |
99클럽 코테 스터디 24일차 TIL Leetcode Append K Integers With Minimal Sum (0) | 2024.06.21 |