-
[BOJ/Python] 백준 2644 - 촌수계산Solve 2024. 7. 22. 15:18
문제더보기문제우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다.여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오. 입력사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 ..
-
[BOJ/Python] 백준 2805 - 나무 자르기, 백준 1654 - 랜선 자르기Solve 2024. 7. 15. 14:59
문제더보기문제상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다.목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15,..
-
[BOJ/Python] 백준 11052 - 가장 긴 증가하는 수열Solve 2024. 7. 8. 15:56
문제https://www.acmicpc.net/problem/11053더보기문제수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.풀이N = int(input())A = list(map(int, input().split()))dp = [1] * Nfor i in r..
-
[BOJ/Python] 백준 1874 - 스택 수열Solve 2024. 7. 8. 15:41
문제더보기문제스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다.1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력첫 줄에 n (1 ≤ n ≤ 100,000)이 ..
-
[BOJ/Python] 백준 11724 - 연결 요소의 개수Solve 2024. 7. 8. 15:11
문제https://www.acmicpc.net/problem/1172더보기문제방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. 출력첫째 줄에 연결 요소의 개수를 출력한다.풀이import syssys.setrecursionlimit(10 ** 7)input = sys.stdin.readlinen, m = map(int, input().split())graph = [[] for _ ..
-
[BOJ/Python] 백준 1012 - 유기농 배추Solve 2024. 7. 8. 15:05
문제https://www.acmicpc.net/problem/1012더보기문제차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다.한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군데군데 심어 놓았다. 배추들이 모여있는 곳에는 ..
-
[CodeTree/Python] 최대 이익 구하기 2Solve 2024. 6. 30. 18:54
문제더보기최대 이익 구하기 2n일 동안 하루에 하나씩 일을 지급받습니다. 일은 하는데 걸리는 날짜 수 Ti와, 받는 보수 Pi가 정해져 있습니다.여러 개의 일은 동시에 할 수 없고, 모든 일은 n일 안에 마무리되어야 합니다.예를 들어서, n=5 일 때 다음의 상황을 생각해봅시다.이런 경우, 1일에 일을 하게 되면 1일~3일에 걸쳐서 일하게 되며, 100의 보수를 지급받습니다. 그렇기 때문에, 1일에 일하기로 하면 2일 또는 3일에 할당된 일은 할 수 없습니다.또, 4일에는 일을 할 수 없는데, 이는 4일에 시작한 일은 n일 안에 마무리되지 않기 때문입니다.따라서 위의 예시에서 가장 많은 이익을 얻기 위해서는, 1일과 5일에 할당된 일을 해서 120의 이익을 얻어야 합니다.지급받은 일을 하는데 걸리는 ..
-
[CodeTree/Python] 앞의 두 수를 더한 수열, 1, 2, 3 더하기Solve 2024. 6. 30. 18:43
문제더보기앞의 두 수를 더한 수열첫 번째 항이 0이고, 두 번째 항이 1인 수열이 있습니다.이 수열의 세 번째 항부터는 바로 앞의 두 항의 합을 값으로 가집니다.n이 주어졌을 때, 이 수열에서 n + 1 번째 항을 구하는 프로그램을 작성하세요. 입력 형식첫 번째 줄에 정수 n이 주어집니다.1 ≤ n ≤ 20출력 형식첫 번째 줄에 n + 1 번째 항을 출력합니다. 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai 풀이n = int(input())li = [0, 1]def func(n): while True: for i in range(len..
-
[BOJ/Python] 백준 2563 - 색종이Solve 2024. 6. 26. 01:19
문제더보기문제가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. 입력첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 ..
-
[BOJ/Python] 백준 1541 - 잃어버린 괄호Solve 2024. 6. 26. 01:11
문제 더보기문제세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 입력첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 출력첫째 줄에 정답을 출력한다.풀이# 최소값 되려면 다음 - 부호 나오기 전 - 부호 식을 다 묶어야 함# - 단위로 쪼개기li =..