분류 전체보기 275

[오목교] 대학생 첫 술집 알바

2017년 입시가 끝나고 대학생이 돼서 처음으로 한 정기 알바는 바로 술집 알바다. 오목교역 1번 출구에서 나오면 바로 보이는 술집 알바였는데, 평소 술집알바를 해보고 싶어 했다. 비교적 집이랑도 가까운 술집이어서 고등학교 친구 재범이랑 같이 면접을 보러 간 기억이 난다. 사장님은 백발의 아버지 세대면서 이런저런 얘기를 하는 것을 좋아하셨고, 사모님은 조용하지만 재밌으셨다. 워낙 오래된 기억이라 정확히 회고하기는 어렵겠지만, 그래도 재밌게 알바했던 추억으로 남아있다. 술집이름부터가 "거리에..." 였는데, 젊은사람들보다는 직장인들이 많이 오는 술집이었고, 주변에 sbs가 있어서 촬영팀의 회식이 자주 잡혔던 것 같다. 기억나는 팀으로는 "정글의 법칙" 팀이랑 "백종원의 골목식당" 팀이 왔었고, 백종원 아..

[리트코드/leetcode/python] 121. Best Time to Buy and Sell Stock

위 문제는 그리디 문제입니다. 리스트를 순회하면서 최적의 값을 찾아나가는 문제이죠. 맨 처음에 저는 O(n^2))의 복잡도로 문제를 풀었습니다. 그래서, 시간초과의 문제에 걸렸습니다. 제약조건을 보면 prices의 길이가 최대 100000이기 때문에, O(n^2)의 복잡도로 풀어버리면 10의 8승을 넘기 때문에 시간초과에 걸리는 것은 당연한 소리겠죠! 처음, 시간초과에 걸렸던 코드는 아래와 같습니다. class Solution: def maxProfit(self, prices: List[int]) -> int: is_reversed_sorted = all(prices[i] >= prices[i+1] for i in range(len(prices)-1)) if is_reversed_sorted: retur..

[리트코드/leetcode/python] 21. Merge Two Sorted Lists

위 문제는 정렬된 두 리스트를 병합하는 문제입니다. 단순 알고리즘 문제를 푸는 것이 아니라 자료구조를 고려해서 풀어야 하는 문제였는데요, 자료구조의 필요성이 느껴진 문제이기도 했습니다. 문제를 접근하는 방식에는 2가지 방법이 있는데요, 하나는 재귀적 알고리즘을 사용하는 방법과 두번째로는 더미노드를 만들어 그 뒤에 이어 붙이는 방법이었습니다. 시간 복잡도는 둘다 O(n+m)이 나오는데요, 두 번째 방법으로 푼 코드를 살펴봅시다. # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeT..

[리트코드/leetcode/python] 392. Is Subsequence

이 문제는 주어진 문자열 t 안에 s문자열이 있는지 아닌지를 판단하는 문제입니다. 예를 들어서, t가 ahbgdc 이고, s가 abc 라면, ahbgdc에서 h,g,d,를 제거하면 abc가 되므로 true를 반환합니다. 반면, 만약 t가 abcde이고, s가 aec 라면, abcde 문자열에서 어떤 수를 써서라도 aec를 만들 수 없기에 false를 반환합니다. 즉, t의 원래의 문자열에서 순서는 유지한 채 수열을 이루는 항 중에 일부만 모아 s가 만들어진다면, true를 반환하고, 그렇지 않다면 false를 반환하면 됩니다. 코드를 통해 살펴보죠. class Solution: def isSubsequence(self, s: str, t: str) -> bool: idx = 0 cnt = 0 if len..

[리트코드/leetcode/python] 205. Isomorphic Strings

주어진 문자열 s와 t가 동형사상이라면, true를 반환하고, 그렇지 않으면, false를 반환하는 문제인데요! 다양한 문제풀이가 있을거에요. 딕셔너리를 이용해서 풀어도 되고, 자바를 활용한다면 해시맵으로도 풀 수 있을 것 같습니다! 저도 처음에는 딕셔너리로 접근을 했다가, index의 위치만 저장하는 리스트로 풀어도 되겠다 싶어서 리스트만을 이용했습니다. 코드를 보면서 살펴보겠습니다. class Solution: def isIsomorphic(self, s: str, t: str) -> bool: answer = False if len(s) != len(t): return answer else: s_check = [] t_check = [] for i in s: s_check.append(s.index..

반응형