본문 바로가기

728x90

IT/Python

(167)
[백준] 1149번 RGB거리 [Python] - 다이나믹 N개의 집이 일렬로 있고, 빨강, 초록, 파랑 이 세가지로 칠하는 경우 각각 집마다 색마다 비용이 주어졌다. N은 2 이상 1000이하이고, 비용은 1000 이하 자연수이다. 이웃 집과 다른 색으로 N개의 집을 모두 색칠할 때, 비용 합산의 최솟값을 구하는 문제 더보기 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i$(2 ≤ i ≤ N-1)$번 집..
[백준] 11725번 트리의 부모 찾기 [Python] - 그래프 이론, BFS, DFS 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 문제 더보기 문제 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 노드의 개수 N $(2 ≤ N ≤ 100,000)$이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다. 출력 첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다. https://www.acmicpc.net/problem/11725 bfs나 dfs 알고리즘을 사용해서 1의 자식을 탐색하면서 그 자식의 부모를 1로 기록하고, 연결된 노드를 탐색하면서 그 부모를 기록하는 과정을 반복했으며, 부모가..
[백준] 7662번 이중 우선순위 큐[Python] - 자료구조 k개의 명령어와 정수가 주어진다. I는 삽입, D는 삭제를 의미하는 연산 I n: n을 큐에 삽입 D 1: 최댓값 삭제 D -1: 최솟값 삭제 모든 연산 후 큐에 남아있는 최댓값과 최솟값을 출력, 큐가 비어있으면 'EMPTY'를 출력하는 문제 큐가 비어있을 때, 명령어 D는 무시하면 됨 더보기 문제 이중 우선순위 큐$($dual priority queue$)$는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산$($operation$)$ 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데..
[백준] 11053번 가장 긴 증가하는 부분 수열 [Python] - 다이나믹, LIS 어떤 임의의 수열이 주어질 때, 이 수열에서 몇 개의 수들을 제거해서 부분수열을 만들 수 있다. 이때 만들어진 부분수열 중 오름차순으로 정렬된 가장 긴 수열을 최장 증가 부분 수열$($LIS: Longest Increasing Subsequence$)$이라 한다. LIS의 길이를 구하는 문제 더보기 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N $(1 ≤ N ≤ 1,000)$이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 $A_i$가 주어진..
[백준] 14500번 테트로미노 [Python] - BFS, DFS N x M 개의 숫자가 주어짐 위와 같은 정사각형 4개를 이어붙인 도형 하나를 주어진 N x M 크기의 종이 위에 올렸을 때, 도형이 덮는 칸의 수들의 합의 최댓값을 구하는 문제 더보기 문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다. 테트로미노..
[백준] 15663~15666번 N과 M[9~12] [Python] - 순열, 조합, 중복 백준 문제 사이트 N과 M[9], N과 M[10], N과 M[11], N과 M[12] 중복된 원소가 포함되기도 한 N개의 자연수가 주어졌을 때, M개의 순열, 조합, 중복 순열, 중복 조합을 구하는 문제 N과 M[7, 8]리뷰 https://savvy0402.tistory.com/192 dict.fromkeys$($딕셔너리의 키 값들, 현재 생성할 딕셔너리의 일괄적으로 들어가게 될 값$)$ 값을 안 넣으면 모든 key의 값이 None으로 저장됨 N과 M[9] from sys import stdin from itertools import permutations input = stdin.readline N, M = map(int, input().split()) s = sorted(input().rstrip(..
[백준] 9019번 DSLR [Python] - BFS 두 숫자 A와 B$(A ≠ B)$가 주어졌을 때, A를 아래 DSLR 연산을 통해 B로 만드는 문제 가능하면 최소 명령어를 나열하고, 명령어가 여러가지일 경우 아무거나 한 가지 출력한다. 연산 값은 0이상 10000미만으로 저장 $($10000 모듈러 연산을 사용했습니다.$)$ D: n을 두 배로 바꾼다. S: n에서 1 을 뺀다 L: n의 각 자릿수를 왼편으로 회전시켜 그 결과를 레지스터에 저장한다. 예$)$1023 >>> 231 >>> 2310 R: R 은 n의 각 자릿수를 오른편으로 회전시켜 그 결과를 레지스터에 저장한다. 더보기 문제 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 ..
[백준] 16928번 뱀과 사다리 게임 [Python] - BFS 1에서 시작해서 100까지 도착하는 뱀과 사다리 게임에서 최소 주사위 굴리는 횟수 구하는 문제 올라가는 사다리 개수 N, 내려가는 뱀 개수 M, 각각의 시작칸과 도착칸이 주어진다. 1번 칸과 100번 칸은 뱀과 사다리의 시작 또는 끝이 아니다. 더보기 문제 뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다. 주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까? 게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다. 플레이어는 주사위를 굴려 나온 수만..
[백준] 10026번 적록색약[Python] - BFS 색별로 구분된 구역의 개수를 구하는 문제 3색을 기준으로 구분된 구역과 적록색약에 의해 빨간색과 초록색을 같은 색으로 볼 때, 구분되는 구역의 개수를 각각 구해야 합니다. RRRBB GGBBB BBBRR BBRRR RRRRR 더보기 문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R$($빨강$)$, G$($초록$)$, B$($파랑$)$ 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. $($색상의 차이를 거의 느끼지 못하는 경우도 같..
[백준] 7569번 토마토 [Python] - BFS 익은 토마토는 하루가 걸려서 상,하,좌,우,앞,뒤로 1칸 떨어진 안익은 토마토를 익게 만든다. H, N, M과 토마토의 상태가 M개씩 N개의 줄로 H번 주어질 때, 모든 토마토가 익는 최소 일수를 구하는 문제 1: 익은 토마토 0: 안익은 토마토 -1: 빈 칸 익지 않는 토마토가 있을 경우$($토마토는 자동으로 익지 않고, 위의 규칙에 의해서만 익는다고 하자.$)$ >>> -1 출력 더보기 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은..
[백준] 10973번 이진 순열 [Python] 더보기 문제 1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 바로 이전에 오는 순열을 구하는 프로그램을 작성하시오. 사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다. N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다. 1, 2, 3 1, 3, 2 2, 1, 3 2, 3, 1 3, 1, 2 3, 2, 1 입력 첫째 줄에 N$(1 ≤ N ≤ 10,000)$이 주어진다. 둘째 줄에 순열이 주어진다. 출력 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. https://www.acmicpc.net/problem/10973 시간 초과 ..
[백준] 20539번 가장 가까운 세 사람의 심리적 거리 [Python] - 비둘기집 원리 두 사람의 서로 다른 유형의 개수를 두 사람의 거리라고 했을 때, 세 사람의 거리를 a와 b의 거리 + b와 c의 거리 + c와 a의 거리의 합라고 하자 N명의 사람들 중에서 세 사람의 거리 중 최소를 출력하는 문제 더보기 문제 여러분은 요즘 유행하는 심리검사인 MBTI에 대해 들어보았는가? MBTI$($Myers-Briggs Type Indicator$)$는 C.G.Jung의 심리유형론을 근거로 하여 Katharine Cook Briggs와 Isabel Briggs Myers가 보다 쉽고 일상생활에 유용하게 활용할 수 있도록 고안한 자기보고식 성격유형지표이다. $($출처: 위키백과$)$ MBTI는 아래와 같이 네 가지 척도로 사람들의 성격을 구분한다. 외향$($E$)$ / 내향$($I$)$ 감각$($S..