부트캠프

    [13일차] TIL - Back Tracking

    알고리즘 주제 - 백트래킹 백트래킹에 대해 공부하고 leetcode 51번 문제를 예제로 풀어보고 다음 3문제를 풀었습니다. 백트래킹이란 현재 상태에서 가능한 모든 경로를 따라 들어가 탐색하다, 원하는 값과 불일치하는 부분이 발생하면 더 이상 탐색을 진행하지 않고 전단계로 되돌아갑니다. (back-tracking) 백트래킹과 DFS를 혼동하기 쉬운데 엄밀히 말하면 서로 다른 개념이라고 할 수 있습니다. 백트래킹은 원하는 값과 경로가 다르면 더 이상 해당 경로는 탐색하지 않지만 DFS는 원하는 경우가 아니더라도 모든 경우의 수를 탐색합니다. 1. N - Queen https://www.acmicpc.net/problem/9663 다음과 같이 풀었지만 30초가 넘는 시간이 나오면서 어쩔 땐 정답판정을 받았지..

    [알고리즘 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..

    [3일차] TIL

    미니 프로젝트 3일차 오늘 하루종일 게시물 업데이트 기능을 구현했습니다. 게시물 페이지에서 '게시물 수정' 버튼을 누르면 게시물 생성 폼의 각 input에 기존 게시물 정보들이 들어와 있어야 했습니다. 2가지 방법을 생각했습니다. 1. 게시물 id 값을 서버에 요청해서 DB에서 해당 정보를 찾아 redirect 혹은 render_template로 담아서 보낼 것 2. 서버로 보내지 않고 url에 기존 상세페이지 정보들을 담아 보낼 것 첫번째 방법은 게시물 생성폼으로 정보들이 보내지지 않아서 시간상 두번째 방법을 선택했습니다. 나중에 따로 공부를 한 후에 다시 시도해 보는 것이 좋을 것 같습니다. 두번째 방법으로 url에 정보들을 담아서 보냈지만 파라미터들을 추출하는데 상당한 시간이 걸렸습니다. 한글의 경..