목록전체 글 (166)
No Limitation
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DwxCM/btrr2XJ9Vrm/OmwLMTuO3PV46jarfnp5Xk/img.png)
금일은 군산 해넘이를 보러 갔다. 새해가 시작된지는 한달이 지났지만 다시 맘을 새롭게 먹고 새 해의 다짐을 되새겨본다. 지금의 나는 잘 가고 있는지, 내게 주어진 길을 올바르게 잘 수행하고 있는지 믿음의 여정은 잘 밟고 있는지 또, 무엇보다 행복하게 잘 지내고 있는지 끊임없이 나를 돌아보자. 후회없이 열정적이게 하지만 나를 사랑하면서 나아가보자.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/VvZBc/btrr9g9ovDm/FVS6AaElm7n8mIAV1bxNUk/img.png)
https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 스택큐 유형의 전형적인 문제인 연산자 관련 문제이다. 본 문제에서는 괄호의 순서에 맞는 연산을 수행해야 하며 괄호를 형성하지 못하는 경우 0을 반환해야 한다. ( ) = 2 [ ] = 3 (..) = 2 * .. [..] = 3 * .. (..)[..] = (2 * ..) + (3 * ..) 다음과 같은 연산 성질을 갖는다. 구체적으로 예를 들어 살펴보자 (()[[]])([]) 다음은 알고리즘 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ym6y7/btrr9gIhMZo/0Ty0pRCcwI4qT8ETYXNeRK/img.png)
참고 강의 고려대학교 산업경영공학부 강필성 교수님 https://www.youtube.com/watch?v=HZg8_wZPZGU Boosting 개념의 시초, Adaptive Boosting에 대해 알아보자 Adaboost에서 우선, 다루어지는 개념은 바로 "Weak Learner"이다. 논문에 보면 다음과 같은 문구가 나온다. 즉, weak model은 random guessing보다는 약간 더 잘하는 모델 예를 들어, 정답이 0/1 2개의 카테고리 변수가 있는 상황에서 이 데이터들이 50% 씩 존재할 때, 어떠한 모델이 60%의 정확도를 가지면 이 모델을 weak leaner라고 한다. 그리고 이러한 weak learner에게 "적절한 가이드"만 주어지면 성능이 향상될 수 있을 것이라고 말한다. 이러..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cDAZPL/btrr2yjoeiZ/1Vk30CYYxYNziwEa2kgTn1/img.png)
https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr Fact Finding DFS 문제를 통해 모든 곳을 방문할 수 있는 경로를 저장 Algorithm Flow Recursion을 통한 DFS 구현 후 경로를 answer에 저장 start_point 체크를 통해 모든 곳을 방문할 수 없는 경우 filter next의 sort과정을 통해 알파벳 우선인..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OyfkX/btrr4xKNfGz/7KItI2eFvUfoDZ4ZsIui1K/img.png)
https://programmers.co.kr/learn/courses/30/lessons/43163?language=python3 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr Fact Finding DFS 문제를 통해 최소 변환 횟수를 찾기 Algorithm Flow recursion을 통한 DFS 구현 후 가장 최소의 경우를 final_result에 저장 여기서 주의해야 할 부분이 바로 global 변수의 활용이다!! 구현 코드 # 반례 # hit # cog ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bDojNO/btrr2WYkIeE/WT1FlGnwxKf9QO13ZOgtSk/img.png)
https://programmers.co.kr/learn/courses/30/lessons/43162?language=python3 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr Fact Finding Disjoint Set을 찾는 문제 Algorithm Flow Union Find(union by Rank) 알고리즘을 사용하여 Disjoint Set을 나눔 Disjoint Set을 찾는 알고리즘인 Union Find에 대해서는 추후 포스팅에서 자세하게 다루겠습니다! ( 양이 너무 많아질 거 같아서 ㅠ..
https://programmers.co.kr/learn/courses/30/lessons/43165?language=python3 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr Fact Finding 재귀 함수를 통한 DFS 구현 '+'와 '-'를 번갈아서 적용해주어 모든 경우의 수를 check 이 중 타겟 넘버와 일치할 때 +1 증가시키고 recursion 수행 Time Complexity 최악의 경우 O(n^2)로 판단되는 데 정확히 분석한 것인지 확실하지 않음 def probl..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UpPJd/btrr03Rxhrn/FLml0BNDkJ4PkgKuwnSKT0/img.png)
https://programmers.co.kr/learn/courses/30/lessons/42579?language=python3 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr Fact Finding 해시의 자료구조 이용 장르, play 횟수, 노래의 고유 번호 정보를 다 가지고 있는 자료 구조를 구축하는 것이 필요 노래를 수록하는 기준을 전부 적용해주어야 Time Complexity 장르 구축 O(n) 자료구조 구축 O(n) 장르 sorted 정렬 O(nlogn) 최종 정렬 O(x*nlogn) (x =..
https://www.notion.so/ac6d6c63a1aa4c3a91f503f6ca7bd77a 전화번호 목록 [완료] 문제 설명 www.notion.so 내 풀이 나 같은 경우는 사실 정말 단순하게 O(n^2)로 풀었다ㅠㅠ 이 문제를 n^2 알고리즘으로 푸는 건 좋은 방향은 아닌 것 같다 def solution(phone_book): phone_book = sorted(phone_book, key=lambda x : len(x)) for i in range(len(phone_book)) : for j in phone_book[i+1:] : if phone_book[i] in j : if phone_book[i][:len(phone_book[i])] == j[:len(phone_book[i])] : a..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cDE5pY/btrr1mDG9F0/Q1uNlLjc6FDXl5tIwSvnmk/img.png)
본 포스팅은 다음 자료들을 참고하였습니다 : 한동대학교 한다성 교수님 강의 자료 https://siyoon210.tistory.com/85 https://mangkyu.tistory.com/102 해시는 검색과 저장에 특화된 자료구조로 python의 경우 dictionary가 내재적으로 해시로 저장되어 있다...! 빠르게 저장할 수 있는 기저에는 데이터를 검색할 때 사용할 key와 실제 데이터의 값이 (value가) 한 쌍으로 존재하고, key값이 배열의 인덱스로 변환되기 때문에 검색과 저장의 평균적인 시간 복잡도가 O(1)로 수렴하게 된다. 예를 들어보자 (yscho, "1022") 를 담고 있는, 즉, 'yscho'를 key로 '1022'를 value로 가지고 있는 자료 구조라고 했을 때, 이 데이터..