[프로그래머스] 짝지어 제거하기
·
Algorithm
문제 틀렸던 풀이(시간 초과)#짝지어진 문자열을 제거하는 함수 정의def rm_pair(s): #중복 방지를 위해 set() 사용 c_set = set() #짝지어 제거하기이므로 문자 * 2 해서 set에 넣음 for c in s : c_set.add(c * 2) for pair in c_set : s = s.replace(pair, '') return sdef solution(s): while True: s_after = rm_pair(s) #짝지어진 문자열 제거 전후가 같으면 : 더이상 제거할 문자 X if s == s_after : #문자열이 모두 제거되었을때 ..
[LeetCode] 155 - Min Stack
·
Algorithm
문제 스택을 구현하는 간단한 문제이다. 스택만을 구현하는 것은 간단하지만 스택에 들어있는 요소들의 최소값을 반환하는 메소드가 추가되어있어 이를 추가하는게 관건인 문제이다. 풀이(1)class MinStack: def __init__(self): self.stack = [] #스택의 기능을 할 리스트 선언 def push(self, val: int) -> None: self.stack.append(val) #append() 이용하여 스택에 추가 def pop(self) -> None: if self.stack : #스택에 요소가 있어야 pop이 가능하므로 return self.stack.pop() def top(self..
[LeetCode] 496 - Next Greater Element 1
·
Algorithm
문제 위 문제는 nums1 리스트와 nums2 배열이 주어지는데, nums1의 원소는 모두 nums2에 들어있고, nums1의 각 원소에 대해 nums2 안에서의 다음 큰 수를 찾는 문제이다. 조건nums1에 있는 모든 숫자는 nums2에 있고(포함), nums1 과 nums2에 있는 숫자는 모두 고유하다(중복 X) 풀이(1)처음 문제를 보고 생각해보았을때는 for문을 이중으로 돌리면 되지 않을까 ? 하고 먼저 풀어보았다. nums1의 각 숫자에 대해 nums2에서 그 숫자의 위치를 찾고 그 위치에서부터 뒤로 가면서 처음으로 나오는 더 큰수를 찾는 코드를 사용하였다. class Solution: def nextGreaterElement(self, nums1: List[int], nums2: Li..