본문 바로가기

Algorithm Problems

(212)
[백준/Python] 3273번: 두 수의 합 문제 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 문제 요약 n개의 서로 다른 양의 정수로 이루어진 수열에서 서로 다른 두 수의 합이 x인 쌍의 수를 출력한다. 코드 n = int(input()) arr = sorted(list(map(int, input().split()))) # 배열 정렬 x = int(input()) left = 0 right = n - 1 cnt = 0 while..
[백준/Python] 25706번: 자전거 묘기 문제 https://www.acmicpc.net/problem/25706 25706번: 자전거 묘기 길이가 N미터인 직선 자전거 도로가 있다. 도로는 길이가 1미터인 N개의 칸으로 구분되어 있고, 가장 왼쪽에 있는 칸부터 순서대로 1번 칸, 2번 칸, …, N번 칸이다. 도로의 각 칸에는 점프대가 설 www.acmicpc.net 문제 요약 길이가 N미터(N칸)이고 칸마다 점프대가 존재하는 직선 자전거 도로에서 자전거를 탈 때 총 몇 개의 칸을 밟게 되는지 출력한다. 점프대의 높이가 N이라면 N칸 만큼 건너뛴다. 코드 N = int(input()) arr = list(map(int, input().split())) dp = [1] * N # dp[i]는 i인덱스에서 달리면 밟는 칸의 개수 for i in ..
[백준/Python] 18353번: 병사 배치하기 문제 https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 요약 N명의 병사들이 무작위로 나열되어 있고, 각 병사들은 전투력을 갖고 있다. 병사를 배치할 때는 전투력이 높은 병사가 앞쪽에 오도록 내림차순으로 배치를 해야한다. 남아 있는 병사의 수가 최대가 되도록 하기 위해서 열외해야 하는 병사의 수를 출력한다. 코드 N = int(input()) arr = list(map(int, input().split())) dp = [1] * ..
[백준/Python] 1965번: 상자넣기 문제 https://www.acmicpc.net/problem/1965 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 문제 요약 정육면체 상자 n개가 일렬로 늘어서 있다. 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수 있다. 상자를 넣을 수 있는 방법 중, 한 번에 넣을 수 있는 최대 상자 개수를 출력한다. 코드 n = int(input()) arr = list(map(int, input().split())) dp = [1] * n # dp[i]는 i까지..
[Python/백준] 5639번: 이진 검색 트리 문제 https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 문제 요약 이진 검색 트리를 전위 순회(루트-왼쪽-오른쪽)한 결과가 주어졌을 때, 그 트리를 후위 순회(왼쪽-오른쪽-루트)한 결과를 출력한다. 이진 검색 트리란 세 가지 조건을 만족하는 이진 트리이다. 조건 1. 노드의 왼쪽 서브트리에 있는 모든 노드의 key는 노드의 key보다 작다. 조건 2. 노드의 오른쪽 서브트리에 있는 모든 노드의 key는 노드의 key보다 크다. 조건 ..
[Python/백준] 1991번: 트리 순회 문제 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 문제 요약 이진 트리를 입력 받고, 전위 순회, 중위 순회, 후위 순회한 결과를 출력한다. + 노드의 이름은 A부터 차례대로 알파벳 대문자로 매겨지며, 항상 A가 루트 노드가 된다. + 자식 노드가 없는 경우에는 .으로 표현한다. 코드 import sys input = sys.stdin.readline def preorder(root): # 전위 순회 if root != '.': ..