알고리즘

알고리즘

[PS] 시간복잡도 - 코딩테스트 TIP

코딩테스트 문제를 풀 때, 입력의 크기 n에 대해 시간초과가 나지 않도록 알고리즘을 고려해야 한다.이 사실을 알고 있지만, 항상 특정 시간복잡도에 대해 n의 크기를 어느정도까지 가져갈 수 있는지를 까먹어 해당 글을 작성하게 됐다. 1️⃣ 입력의 크기에 따른 시간복잡도입력의 크기시간복잡도대표 알고리즘n \[O(n!)\]완전탐색n \[O(2^n)O(n^2*2^n)\]Bitmask DPn \[O(\sqrt{2}^n)\]MITMn \[O(n^3)\]Matrix Chain Multiplication(행렬 곱셈)n \[O(n^2)\] n \[O(n\sqrt{n})O(n\log^{2}n)\]모스(Mo's) 알고리즘n \[O(n\log n)\]정렬, LIS(최장 증가 부분 수열)n \[O(n)\]DP, DFS, Tre..

알고리즘/프로그래머스

[프로그래머스] 입국심사(LV3 - Python)

해당 글에서는 입국심사 문제를 Python을 이용해 풀이하고자 한다. 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔷 문제 설명더보기이 문제는 이분탐색에 관련된 문제다.코딩테스트를 보기에 앞서 평소에 이분탐색 문제인 것을 알아내는데 어려움을 느껴 연습하는 시간을 가지고자 해당 문제를 풀게 됐다. 🔷 문제 풀이만약 이 문제가 이분탐색인 문제라는 걸 몰랐다면 어떻게 접근했어야 할까?이분탐색이라는 것의 힌트는 바로 입력의 크기이다. 해당 문제에서 입국심사를 기다리는 사람의 최댓값과 한 명을 심사하는데 걸리는 최대 시간은 1,000,000,000이다. 따라서 ..

알고리즘/프로그래머스

[프로그래머스] 단어 변환(LV3 - Python)

해당 글에서는 단어 변환 문제를 Python을 이용해 풀이하고자 한다. 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔷 문제 설명더보기 🔷 문제 풀이처음엔 완전 탐색을 이용해 문제를 푸려고 했다.combination을 이용해 words의 방문 순서를 정하고, 방문 순서에 따라 한 글자씩 차이나는지 아닌지를 통해 모든 경우를 탐색하고 최솟값을 찾으려고 했다. 하지만 시간초과가 발생하는 것을 확인했다. 해당 문제는 알고리즘 고득점 Kit에 있는 문제이기 때문에 카테고리가 깊이/너비 우선 탐색이라는 것을 알고 있었지만, 마땅히 풀이 방식이 떠오르지 않아서 구..

알고리즘/프로그래머스

[프로그래머스] 이중우선순위큐(LV3 - Python)

해당 글에서는 이중우선순위큐 문제를 Python을 이용해 풀이하고자 한다. 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔷 문제 설명더보기 🔷 문제 풀이먼저 필자가 풀이한 방식보다 더 효율성이 좋은 알고리즘이 있을 수 있다.나름은 이해하기 쉬운 코드라고 생각하여, 문제가 어려운 사람들을 위해 돕고자 글을 올린다. 해당 문제를 푸려면 min_heap과 max_heap에 대해 알아야 한다.min-heap: 부모노드 값이 자식노드의 값보다 작다.max-heap: 부모노드 값이 자식노드의 값보다 크다.즉, 큐에 삽입된 숫자들 중 최댓값, 최솟값을 구하기 위해서..

당찬 뱁새
'알고리즘' 카테고리의 글 목록