코딩테스트 스터디 7주차 학습 자료를 정리한 글이다.정렬된 배열에서 탐색 범위를 절반씩 줄여 나가는 알고리즘과, 이를 확장해 최적값을 구하는 파라메트릭 서치를 다룬다.1. 이분 탐색 기초이분 탐색이란이분 탐색은 정렬된 배열에서 특정 값을 찾을 때 사용하는 탐색 알고리즘이다. 처음부터 끝까지 하나씩 확인하는 선형 탐색은 O(n)이지만, 이분 탐색은 O(log n)이다. n이 10억이어도 탐색 횟수는 30번이면 충분하다.전화번호부를 펼칠 때와 같은 원리다. "박지훈"을 찾는다면 책 한가운데를 펼쳐서 현재 위치가 "박"보다 앞인지 뒤인지 확인한다. 앞이라면 오른쪽 절반만, 뒤라면 왼쪽 절반만 남긴다. 이 과정을 반복하면 수천 페이지의 전화번호부도 10번 남짓한 탐색으로 찾을 수 있다.단, 이분 탐색은 반드시 ..
백준 Silver II | 1182 | Python | 문제 링크문제 설명N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.출력첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다.입출력 예입력출력5 0-7 -3 -2 5 81 나의 풀이풀이 1import sysinput = sys.stdin.readlinedef backtrack(idx, total): global co..
백준 Silver III | 15650 | Python | 문제 링크문제 설명자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열고른 수열은 오름차순이어야 한다.입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 구분해서 출력한다. 수열은 사전 순으로 증가하는 순서로 출력한다.입출력 예입력출력4 21 21 31 42 32 43 4 나의 풀이풀이 1def backtrack(start, seq): if len(seq) == m: print(..
백준 Silver III | 15649 | Python | 문제 링크문제 설명자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 구분해서 출력한다. 수열은 사전 순으로 증가하는 순서로 출력한다.입출력 예입력출력4 21 21 31 42 12 32 43 13 23 44 14 24 3 나의 풀이풀이 1def backtrack(seq, visited): if len(seq) == m: prin..
백준 Silver IV | 1158 | Python | 문제 링크문제 설명1번부터 N번까지 N명의 사람이 원을 이루어 앉아있고, 양의 정수 K (≤ N)가 주어진다. 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. N과 K가 주어지면 요세푸스 순열을 구하라.입력첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)출력예제와 같이 요세푸스 순열을 출력한다.입출력 예입력출력7 3 나의 풀이풀이 1 - 아이디어 확인과 버그 수정요세푸스 문제를 처음 읽었을 때 머릿속에 바로 de..
1. 그래프 기초그래프란 무엇인가그래프는 노드(Node, 정점)와 간선(Edge)으로 구성된 자료구조다. 도시와 도로에 비유할 수 있다. 도시가 노드고, 도시를 연결하는 도로가 간선이다. 지하철 노선도, 소셜 네트워크 친구 관계, 웹 페이지 간의 링크가 모두 그래프 구조다. 1 / \ 2 3 / \ \ 4 5 6배열이나 트리와의 차이는 구조의 자유도에 있다. 배열은 순서가 있고, 트리는 부모-자식 관계가 있으며 사이클이 없다. 그래프는 노드 간 연결 방식에 제약이 없어 사이클도 허용한다.방향 그래프와 무방향 그래프무방향 그래프: 방향 그래프: A --- B A --> B | | ..