다라다라V
article thumbnail
[코테 알고리즘] 소수 판별&투 포인터 / 관련 문제

소수 판별 에라토스테네스의 체 import math # 2부터 1000까지의 모든 수에 대하여 소수 판별 n = 1000 array = [True for i in range(n+1)] # 에라토스테네스의 체 알고리즘 수행 # 2부터 n 제곱근까지의 모든 수 확인 for i in range(2, int(math.sqrt(n)) + 1): if array[i] == True: # i가 소수인 경우 # i를 제외한 i의 모든 배수 지우기 j = 2 while i * j

article thumbnail
[코테 알고리즘] 그래프 이론 / 관련 문제

본 글은 "나동빈"님의 [이것이 코딩 테스트다]를 참고하여 작성하였으며, 필자가 직접 문제를 풀며 관련된 문제들을 찾아 정리하였습니다. 시리즈 보기 [코테 알고리즘] 파이썬 기본 / 관련 문제 [코테 알고리즘] 파이썬 주요 라이브러리 / 관련 문제 [코테 알고리즘] 그리디 / 관련 문제 [코테 알고리즘] 구현 / 관련 문제 [코테 알고리즘] DFS, BFS / 관련 문제 [코테 알고리즘] 정렬 / 관련 문제 [코테 알고리즘] 다이나믹 프로그래밍 / 관련 문제 [코테 알고리즘] 최단 경로 / 관련 문제 [코테 알고리즘] 그래프 이론 / 관련 문제 서로소 집합 서로소 집합 자료구조 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 서로소 집합 : 공통 원소가 없는 두 집합 union-f..

article thumbnail
[코테 알고리즘] 최단 경로 / 관련 문제

본 글은 "나동빈"님의 [이것이 코딩 테스트다]를 참고하여 작성하였으며, 필자가 직접 문제를 풀며 관련된 문제들을 찾아 정리하였습니다. 시리즈 보기 [코테 알고리즘] 파이썬 기본 / 관련 문제 [코테 알고리즘] 파이썬 주요 라이브러리 / 관련 문제 [코테 알고리즘] 그리디 / 관련 문제 [코테 알고리즘] 구현 / 관련 문제 [코테 알고리즘] DFS, BFS / 관련 문제 [코테 알고리즘] 정렬 / 관련 문제 [코테 알고리즘] 다이나믹 프로그래밍 / 관련 문제 [코테 알고리즘] 최단 경로 / 관련 문제 [코테 알고리즘] 그래프 이론 / 관련 문제 최단 경로 가장 짧은 경로를 찾는 알고리즘 = 길 찾기 알고리즘 다양한 유형 한 지점에서 다른 특정 지점까지의 최단 경로 구하기 모든 지점에서 다른 모든 지점까지..

article thumbnail
[코테 알고리즘] 이진탐색 / 관련 문제
카테고리 없음 2024. 3. 9. 17:42

순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인 사용 사례 리스트에 특정 값 원소가 있는지 체크 리스트 자료형에서 특정한 값이 가진 원소의 개수 세는 count() 메서드 이용시 시간 복잡도는 O(N) 이진 탐색 배열의 내부가 정렬되어야만 사용할 수 있음 탐색 범위를 절반씩 좁혀가며 데이터를 탐색 탐색 범위를 절반씩 좁혀가며 데이터 탐색 시작점, 끝점, 중간점 변수 3개 사용 찾으려는 데이터와 중간점 위치에 있는 데이터르 반복적으로 비교 시간 복잡도는 O(N) 재귀 함수로 이진 탐색 구현 def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 3 #..

article thumbnail
[백준] 22868번 파이썬 - BFS, 경로 저장

문제요약 ( 22868. 산책 (small) ) 22868번: 산책 (small) 코로나로 인하여 확찐자가 되버려 오늘부터 산책을 하려고 한다. 이를 위해 산책할 경로를 정하려고 한다. 현재 있는 곳 $S$에서 출발하여 $S$와 다른 곳인 $E$를 찍고 다시 $S$로 돌아오는 경로로 www.acmicpc.net 풀이를 위한 부연 설명 최단 경로를 확인해야하므로 BFS를 사용해야한다. 인접 행렬을 이용해 그래프 형태로 바꾼다 S에서 E로 갔다가, 경로가 겹치지 않게 E에서 S로 돌아와야한다. 구글링 해보니 이 방법이 여러가지가 있다. BFS 함수를 따로 구현 매개변수로 S_TO_E인지 E_TO_S인지 구분 필자는 구글링해서 나오지 않던(아마...), 문자열로 지나왔던 경로를 저장하고 새로운 visited ..

article thumbnail
[백준] 19637번 파이썬 - 이분탐색, bisect

문제요약 (19637. IF문 좀 대신 써줘) 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 풀이를 위한 부연 설명 두 가지 방법으로 풀 수 있는 문제이기에 나눠서 작성하겠다. 이분탐색 각 칭호의 이름과 기준을 받아온다. 이때 중복되지 않는 값을 받아오도록 처리를 해야한다. 이후 입력받은 캐릭터의 힘이 기준치 어디에 포함되는지 확인한다. 인덱스 값을 기준으로 하여 이분탐색을 진행한다. bisect 이용 훨씬 간결하고 빠른 코드이다. bisect 이진 탐색을 쉽게 구현..

article thumbnail
[백준] 13164번 파이썬 - 그리디, 정렬

문제요약 (13164번. 행복 유치원) 13164번: 행복 유치원 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K(1 ≤ K ≤ N)가 공백으로 구분되어 주어진다. 다음 줄에는 원생들 www.acmicpc.net 풀이를 위한 부연 설명 아이디어를 떠올리는 것이 중요한 문제이다. 먼저 유치원생들 간의 키 차이를 diff에 저장한다. 인덱스 에러에 주의한다. n-k개의 diff 값을 더하면 구하려는 값이 나온다. 그리디와 정렬에 대한 자세한 개념 설명과 연관 문제는 다음 링크를 참고하면 된다. [코테 알고리즘] 그리디 / 관련 문제 본 글은 "나동빈"님의 [이것이 코딩 테스트다]를 참고하여 작성하였으며, 필자가 직..

article thumbnail
[백준] 1654번 파이썬 - 이분탐색

문제요약 (1654. 랜선 자르기) 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 풀이를 위한 부연 설명 이분탐색을 이용하는 정석적인 문제이다. 원하는 개수의 랜선이 나왔다면 해당하는 길이보다 더 작게 잘라도 원하는 개수만큼의 랜선이 나오는지 탐색하고 아니라면 자르려는 길이를 수정한다. 코드 import sys input = sys.stdin.readline k, n = map(int, input().split()) lines = [int(input()) for _ in rang..

article thumbnail
[백준] 2800번 파이썬 - 스택, 조합

문제요약 (2800. 괄호 제거) 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 풀이를 위한 부연 설명 괄호의 위치를 스택을 통해 구현한다 각 괄호의 쌍을 뽑아내야하므로 스택을 사용한다. 괄호 쌍을 "포함한다/포함하지 않는다" 이 두 가지 경우에 대한 모든 수를 알아보기 위해 조합을 사용한다. 파이썬 itertools의 combinations를 이용해 경우의 수를 구한다. 여러 가지 같은 경우가 나올 수 있으므로 set()으로 답을 넣는다. 조합에 대한 자세한 개념 설명과 연..

article thumbnail
[백준] 11286번 파이썬 - 우선순위 큐

문제요약 (11286.절대값 힙) 배열에서 절댓값이 가장 작은 값을 출력한다. 절대값이 같은 경우에는 가장 작은 수(음수)를 먼저 출력한다. 파이썬에서 절댓값을 구하는 함수는 abs()이다. 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이를 위한 부연 설명 우선순위 큐 ( Priority Queue ) 원소들의 우선순위별로 정렬한다. 원소의 우선순위를 설정하여 값을 추가하는 put과, 값을 반환하는 get이 있습니다. 우선순위 큐를 이용하면 문제에서 해당하는 값을 넣을 수 있습니다. ..