전체 글

전체 글

    [알고리즘 1주차] WIL

    1. 연결리스트 연결리스트의 개념 자체는 어렵지 않았습니다만 빈 에디터에 직접 처음부터 구현하는 것이 까다로웠습니다. 직접 구현해보는 것은 자주 해야 잊어버리지 않을 것 같습니다. 연결리스트 과제 대부분 코딩테스트라는 점 보다는 기술 면접에 나올 법한 질문들이라는 생각이 들었습니다. 따라서 구현을 처음부터 직접 해본 후 문제를 푸는 것이 훨씬 수월했습니다. 2. 스택 스택 또한 구현이 기본이 되어야하지만 문제를 마주했을 땐 구현을 하는 것과 문제를 푸는 것은 다른 영역이라는 생각을 했습니다. 왜냐하면 파이썬의 list자체가 스택의 성격을 가지고 있기 때문입니다.( 이는 큐 역시 마찬가지 입니다. ) 3. 큐 큐 역시 스택과 같이 파이썬 collections의 deque 라이브러리를 사용하면 간단하게 구현..

    [11일차] TIL (DFS)

    DFS 1. 전화번호 문자 조합 https://leetcode.com/problems/letter-combinations-of-a-phone-number/ 파이썬 답게 푼 풀이입니다. 짧게 쓸 수 있다는 장점이 있습니다. class Solution: def letterCombinations(self, digits: str) -> List[str]: phone_map = { '2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz' } if digits == "": return [] numbers = list(phone_map[digits[0]]) # ['a', 'b', 'c'] for dig..

    [10일차] TIL - Week1 Test

    첫 주차 알고리즘 시험 1. 기능 개발 https://programmers.co.kr/learn/courses/30/lessons/42586 내 풀이 def solution(progresses, speeds): stack = [] cnt = 0 for idx, prog in enumerate(progresses): work_day = 0 while True: prog += speeds[idx] work_day += 1 if prog >= 100: break stack.append(work_day) # stack = [7, 3, 9] # stack = [5, 10, 1, 1, 20, 1] stack에 각 기능이 완성되는 시간을 쌓은 후 내림차순으로 자른는 과정에서 해결이 되지 않았습니다. 다음은 큐처럼 구..

    [9일차] TIL (Hash Table)

    Hash Table hash 해시 함수란 임의 크기 데이터를 고정 크기 값으로 매핑하는데 사용할 수 있는 함수를 말합니다. 해시테이블의 핵심은 해시 함수입니다. 성능 좋은 해시 함수들의 특징 해시 함수 값 충돌의 최소화 쉽고 빠른 연산 해시 테이블 전체에 해시 값이 균일하게 분포 사용할 키의 모든 정보를 이용하여 해싱 해시 테이블 사용 효율이 높을 것 생일 문제 import random TRIALS = 100000 # 10만 번 실험 same_birthdays = 0 # 생일이 같은 실험의 수 # 10만 번 실험 진행 for _ in range(TRIALS): birthdays = [] # 23명이 모였을 때, 생일이 같을 경우 same_birthdays += 1 for i in range(23): bi..

    [5일차] TIL (문자열 다루기)

    알고리즘 주차 시작 알고리즘 강의를 듣고 과제(문자열 조작 / 배열)를 푸는 식 이었습니다. 오전 중으로 강의를 다 듣고 8시 발표 전까지 과제를 다 풀어야했고 다음은 과제 내용입니다. 1. 그룹 애너그램 https://leetcode.com/problems/group-anagrams/ 처음에는 다음과 같이 이중 for문을 돌려서 비효율적으로 접근 했습니다. def groupAnagrams(self, strs: List[str]) -> List[List[str]]: new_strs = [] temp = [] for word in strs: # sort() vs sorted() sort_word = sorted(word) sort_word = ''.join(sort_word) # 알파벳 순으로 정렬 new..