하루를 끙끙대며 문제를 풀다가 때려치고 테트리스 구현하다가 막혀서 다시 돌아와서 문제를 풀었다. 그렇게 어려운 문제는 아니었는데 아무래도 백트래킹 문제가 워낙 어렵다 보니 끙끙댔나보다.각설하고, 깃허브에는 올리지만 추후에 내가 백트래킹 문제를 풀면서 이걸 내가 어떻게
주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 ICN 공항에서 출발합니다.항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.제한사항모든 공항은
프로그래밍 대회에서 배우는 알고리즘 문제해결전략에서 609페이지의 선형자료구조 내용을 요약, 정리한 게시글입니다.배열과 같이 일렬로 늘어선 자료들을 저장하기 위한 자료 구조: 동적 배열과 연결 리스트배열의 큰 문제 중 하나: 처음 배열을 선언할 때 배열의 크기를 지정,
🤗 [프로그래밍 대회에서 배우는 알고리즘 문제해결전략]에서 609페이지의 큐와 스택, 데크 내용을 요약, 정리한 게시글입니다. 일렬로 늘어선 자료구조를 표현한 자료 구조. 자료를 넣고 꺼내는 연산을 지원, 특정한 순서로 넣고 특정한 순서로 꺼낼 수 있다는 특징을 가
문제 링크반례 때문에 틀린 문제, 앞으로는 문제를 읽으면서 관용적으로 인정해버리지 말자. 꼼꼼하고 깐깐하게 if else문 쓰기.
백준 2164번 카드2 문제list에서 pop(0)의 연산이 O(n)이라고 함.그래서 python 공식 docs에서도 리스트는 큐로 쓰는 걸 권장하지 않는다고 함. 차라리 collections의 deque을 쓰라고 함.dequepopleft, popappend, app
트리와 밀접하게 연관된 다른 자료 구조.우선순위 큐: 큐처럼 순서대로 기다리고 있는 자료들을 저장하는 자료 구조. BUT 우선순위가 가장 높은 자료가 가장 먼저 꺼내짐(큐와 다른 점)균형 잡힌 이진 트리 사용하면 원소들을 우선순위로 정렬해 두면 최대 원소를 찾아 삭제하
백준 11279번 최대 힙 문제python에서 우선순위 큐/힙을 담당하는 라이브러리는 heapq와 queue의 PriorityQueue가 있는데, 여기서는 heapq를 사용해서 풀었다.heapqPriorityQue랑 달리 별개의 자료구조가 아님.heapq 모듈의 함수를
백준 11286. 절댓값 힙 문제heapq 문제. 상당히 간단한 편heapq 찾아보니까 PriorityQueue보다는 heapq를 권장한다고 함.heapq에서 heappush 함수로, 원소를 heap에 추가할 때 튜플 형식으로 집어넣을 수 있음. heapq.heapp
백준 1655번 가운데를 말해요반으로 나눠서 최대 힙, 최소 힙으로.처음 접근정리해보면,짝수(2n개) => 최대 힙(0.."n-1") / 최소 힙(n...2n-1)홀수(2n+1개) => 최대 힙(0..n-1)/ 최소 힙("n"...2n)즉, 여기서 "" 표시한 게 중간
O(n^2)으로, 2중 for문으로 swap해 가면서 정렬해 나가는 방법.분할 정복의 진수를 보여주는 알고리즘. 최선과 최악 모두 O(nlogn).대부분의 경우 퀵 정렬보다 느리지만 일정한 실행 속도뿐만 아니라 무엇보다도 안정 정렬(Stable sort)이라는 점에서
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 6, 10, 2라면 6102, 6210, 1062, 1026, 2610, 2106를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양
사용 언어: python 3.9.1백준 14889: 스타트와 링크비트마스크 공부해야겠다.너무 오래 걸려서 풀었는데, 역시 처음부터 아이패드로 풀었어야 했다.재귀라는 느낌이 오면 무조건 dfs 예상하고 그려보면서 어떤 변수를 전역변수로 둘 지, 아니면 인자로 전달할 지를
무턱대고 하는 것보다, 테스트 케이스로 적힌 것을 그려 보면서 어느 정도 이해하고 하는 게 좋다. 이게 훨씬 시간 절감. 즉, 문제를 이해하는 시간이 어느 정도 필요하다.
사용 언어: python 3.9.1백준 1038. 감소하는 수최대한 모든 케이스 커버하려고 노력하기. 설계부터 노력하기!너무 어렵게 푼 것 같다. 조금 더 쉽게 풀려고 노력해야겠다. 그리고 어차피 메인함수에서 재귀함수와 동일한 알고리즘을 쓸 거면 그냥 재귀함수로 통일해
사용 언어: python 3.9.1백준 7662. 이중 우선순위 큐문제를 읽으면서 반례가 될 만한 부분들을 차근차근 기록해 나가야 할 것 같음.메모리 초과 때문에 어떤 변수에 미리 한꺼번에 저장해두고 쭉 진행하는 것보다는, for문을 진행하면서 input을 따로 분산해
사용 언어: python 3.9.1백준 1697. 숨바꼭질visited 리스트 적용을 적극적으로 고려해 봐야 한다. 특히 이런 최단 경로 비슷한 유형의 bfs의 경우 중복의 경우를 필연적으로 생각해야 하므로 더더더 적극적으로 visited 리스트 적용 고려하기.아무래도
사용 언어: python 3.9.1백준 1629. 곱셈symmetric한 경우인 지 잘 살펴보고 맞다면 한쪽에 대해 재귀함수를 돌린 값을 재활용한다.분할정복은 재귀. 그런데 이 경우 양쪽으로 갈라서서 두쪽에 대해 재귀를 돌리는 게 아님. symmetric하니까!! sy
사용 언어: python 3.9.1백준 9095. 1,2,3 더하기반복되는 패턴을 먼저 찾고 ⇒ 재귀함수의 계속조건을 설정⇒ 재귀함수의 종료조건을 설정 ⇒ 메모이제이션 활용(재귀함수에서 구하는 값들이 중복되지 않게(시간적 손실))재귀적으로 접근 + 메모제이션 이용하는
사용 언어: python 3.9.1백준 11053. 가장 긴 증가하는 부분 수열왠만하면 N으로 처리 말고 len(리스트)으로 처리하기.← 이유: 내가 반례 찾아가는 과정에서 잘못된 반례(예: N=3, list=1,2,3,4)를 입력하는 경우멍 때리는 시간보다 아이패드로