두개의 큐(queue1, queue2)가 존재할 때, 각각 큐의 합이 동일하게 만드는 것이 목표가능한 Action 1) queue2.append(queue1.pop()) 2) queue1.append(queue2.pop())최소한의 Action 으로 각 큐의 합이
sorted는 기본적으로 오름차순 정렬새로운 객체를 생성 1\. arr 객체를 이용하여 정렬된 new_arr를 생성 2\. arr 객체는 정렬되지 않은 상태 그대로reverse = True 사용시 내림차순 정렬sort는 기본적으로 오름차순 정렬현재 객체를 정렬rev
문제어떤 숫자에서 k개의 수를 제거했을 때의 나올 수 있는 수 중에서 최대값을 구하자1924에서 k=2일 때 최대값은 1, 2를 제거한 94가 됨. 2-1-1) top(stack) >= n(삽입하려는 수)이면, stack에 push 2-1-2) top(st
list 내 중복된 값을 제거하고 싶다면 set함수를 사용해보자.그렇다면 아래와 같은 list에서는 어떻게 고유값을 뽑을 까?
문제여러 보석들이 진열장에 진열되어 있을 때, 연속하는 구간에서의 보석이 모든 보석 종류를 포함하도록 하는 시작 지점과 끝 지점을 찾는 문제단, 연속하는 구간이 최소가되어야 하며, 최소가 되는 구간이 여러 구간이 존재할 때는 시작지점이 가장 작은 구간을 선택하여 출력투
디딤돌가 디딤돌의 숫자(수명)이 주어질때, 1명이 디딤돌을 밟으면 디딤돌의 수명이 1씩 줄어들고 0이되면 그 디딤돌은 밟을 수 없다고 하자.디딤돌이 없다면 해당 디딤돌은 건너뛸 수 있으며 k개만큼만 건너뛸 수 있다고 할때, 최대 몇 명까지 건널 수 있는 지 구하자1)
"100-200\*300-500+20" 과 같은 식이 주어졌을 때, 연산자의 우선 순위에 따라 결과이 달라질 수 있다.이 때, 결과의 절대값의 최대값을 구하라1) 문자열을 정규표현식을 이용하여 '100', '-', '200', '\*', '300', '-', '500'
n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 출력하라.MST(크루스칼 알고리즘)푸는 방법은 바로 생각났으나, 아직 알고리즘에 익숙치 않아 한번 더 정리1) 크루스칼 알고리
각 작업에 대해 작업이 요청되는 시점, 작업의 소요시간을 담은 2차원 배열 jobs가 매개변수로 주어진다.HDD는 한 번에 하나의 작업만 수행할 수 있고, 작업을 수행하는 동안 다른 요청이 들어온다면 큐에 넣어 놓는다.작업을 마친 뒤 큐에 들어있는 요청 중 1가지를 선
원판을 꽂을 수 있는 3개의 기둥이 존재하고 n개의 원판이 내림차순으로 1번 기둥에 꽂혀있다.원판을 옮길 수 있는 기준은 아래와 같다. 1) 한 번에 하나의 원판만 옮길 수 있습니다. 2) 큰 원판이 작은 원판 위에 있어서는 안됩니다.1번 기둥에 있는 원판을 최소한
입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어진다.이 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요.중요 point : 이진탐색(어
NxN 크기의 경주로 부지는 0(빈칸), 1(벽)으로 구성되어 있다.각 부지는 도로로 연결할 수 있으며 직선 도로는 100의 비용이 직각 도로는 500의 비용이 든다고 할 때, (0, 0)에서 (N-1, N-1)까지 도로를 건설할 때 드는 최소비용을 구하라1) NxN
압 뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 한다.이 때, 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 출력하라팰린드롬의 길이 1~len(s)일 때, 문자열 s를 window sliding으로 모두
위와 같이 노드와 간선(비용)이 주어진다.S에서 2명이 출발하여 한 명은 A, 남은 한 명은 B로 이동해야한다.동일한 경로를 함께 이동하면 비용은 1번만 든다고 가정할 때, 최소 비용을 구하여라1) 플로이드워셜로 S에서 출발하여 모든 노드로 갈때의 최소비용을 구한다.2
위와 같이 학생들의 인적사항이 주어졌을 때, 학번, 이름, 전공, 학년의 조합으로 유일성과 최소성을 판단할 수 있다.유일성(uniqueness) : 릴레이션에 있는 모든 튜플에 대해 유일하게 식별되어야 한다.최소성(minimality) : 유일성을 가진 키를 구성하는
n 명의 권투 선수가 토너먼트 식으로 경기를 한다고 가정한다.하지만 몇몇 경기 결과를 분실하여 몇몇 경기 결과만 가지고 있을 때, 정확하게 순위를 매길 수 있는 선수의 수를 출력하라.중요 point : 플로이드 워셜을 이용1) 플로이드 워셜을 이용하여 graph(N+1
NxM크기의 행렬모양의 게임맵이 존재하고 각 격자에는 건물의 내구도가 적혀있다.Skill 통해 내구도를 깍을수도 회복할 수도 있으며 skill의 데이터타입은 다음과 같다. Skill을 모두 수행한 후 건물의 내구도가 1이상인 개수를 출력하라.중요 point : 2차원
re를 import 하여 사용하고 다양한 규칙이 있지만, 정말 간단한 사용법만 외우자
mxn 모양의 블록에서 2x2 형태로 같은 블록이 붙어있을 경우 해당 블록은 사라지면서 점수를 얻게 된다.단, 2x2 블록이 서로 겹쳐있다면, 모두 사라지게 된다.블록이 사라진다면, 중력에 의해 아래로 내려오게 되고 위 과정을 반복하여 더이상 블록이 사라지지 않을 때
mxn 크기의 격자모양의 지도가 있고, (0, 0)에는 집의 위치가 (m-1, n-1)에는 학교의 위치가 기록되어 있다.또한, puddles에는 물에 잠겨 지나갈 수 없는 위치가 기록되어 있다.이때, 오른쪽과 아래로만 움직여 최소의 움직임으로 집에서 학교로 가는 경우의
routes에 고속도로의 진입 지점, 진출 지점이 주어 질때, 해당 고속도로를 지나는 차량이 모두 카메라를 만나도록 한다.이 때, 카메라의 최소 설치 개수를 구하라.1) 진출 지점을 기준으로 오름차순으로 정렬2) 첫 번째 route의 진출지점을 변수(outdeg)에 저
위와 같이 cycle이 없는 tree가 존재할 때, 간선 1개를 지워 2개의 tree로 분리하고자 한다.이 때, 나누어진 tree의 정점의 개수의 차이가 최소가 되도록 분리한다.n이 2부터 100까지이므로 완전탐색으로 풀어도 시간이 충분하다고 판단.지우고자 하는 간선을
원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하자.단, 스티커를 뜯어 낼 시 양쪽 2스티커는 찢어져서 사용할 수 없게 된다.원형이 아니라고 생각하면 간단한 DP 문제로 생각할 수 있다.원형이 아닐 시, 차례대로 스
124 나라에서는 10진법이 아닌 위의 표와 같은 규칙으로 수를 표현합니다.10진법이 주어졌을 때, 124 나라의 숫자로 변환해보자.계산의 편의성을 위해 0부터 시작하는 수라고 가정한다.10진법의 수가 124 나라에서 몇 번째 자리수인지와 해당 자리수에서 몇번 째 위치
위와 같이 호텔 대실 시간대가 주어질 때, 모든 사람을 수용하기 위해 최소로 필요한 방 개수를 구하라.단, 퇴실 후 청소를 위해 10분 간 입실할 수 없다.HH:MM으로 된 시간을 MM으로 통일시켜 계산이 용이하도록 해준다. (+ 청소시간 10분도 추가)모든 시간을 탐
weights에 사람의 몸무게가 주어졌을 때, 2 사람을 뽑아 시소에 태우고자한다.시소는 2m, 3m, 4m 거리에 좌석이 있다고 할 때, 시소가 평행하도록 하는 짝의 수를 구하라.계산의 편의를 위해 오름차순으로 정렬해준다.Counter를 이용해 몸무게와 해당 몸무게를
위와 같이 마을과 마을-마을 사이의 이동시간이 그래프 형태로 주어질 때, 1번 마을에서 다른 마을까지 K 시간 내로 이동할 수 있는 마을의 최대값을 구하여라.플로이드-워셜을 이용해서 모든 마을까지의 최소 시간을 구한다.1번 행 혹은 열에 있는 마을의 최소 시간을 검사한
부모 자식들 간의 관계가 주어질 때, 특정 사람 a와 b 사이의 촌수를 구하여라bfs를 이용해 접근
NxM 복도에 음식물이 중간 중간에 놓여으며 상하좌우로 인접한 음식물은 뭉쳐 커다란 음식물이 될 수 있다.이 때, 가장 큰 음식물의 크기를 구하라.dfs를 이용해 음식물의 상하좌우로 탐색탐색하며 접근한 음식물의 개수를 저장하고 최대 음식물 크기를 출력참고로 recurs
NxN 동굴의 (0, 0)위치에 주인공이 위치해 있고, (N-1, N-1)에 있는 출구로 나가고자 한다.하지만, 동굴 내부에 도둑루피로 가득 차있고, 도둑 루피를 먹은 만큼 금액을 잃게 된다.이 때, (N-1, N-1) 출구로 나가는 모든 경우의 수 중 잃은 금액의 최
백준(최단경로) 문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성해라. 방법 heapq를 사용하여 개선된 다익스트라를 이용하여 distance를 업데이트한다. 업데이트된 distance를 차례로 출력한다. 코
위와 같이 A와 B에 각각 카드 숫자가 주어질 때, 한 쪽 카드 적힌 모든 숫자를 나눌 수 있고 다른 한 쪽 카드에 적힌 모든 숫자를 나눌 수 없는 정수 a의 최대값을 구하여라.유클리드 호제법을 이용하여 각 카드에 적힌 숫자의 최대 공약수를 구한다.각 최대공약수가 다른
n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람이 있다면 다음과 같이 6개의 방법이 있습니다.1, 2, 31 ~ n까지의
회전 하고자하는 영역의 $x_1, y_1, x_2, y_2$가 주어지면, 그 영역의 테두리만 시계방향으로 1칸 회전한다.이 때, 회전하는 테두리의 요소 값들 중 최소 값을 저장하고 출력하라.회전하고자하는 영역의 4 꼭지점 좌표를 계산한다.왼쪽 위를 시작으로 한 바퀴 돌
X와 1~9로 구성된 NxM 맵이 존재하고, X는 바다를 1~9는 무인도를 의미한다.(1~9는 무인도 안의 먹이)이 맵에서 인접한 무인도는 먹이를 합산하여 결정한다고 할 때, 모든 무인도의 먹이를 오름차순으로 구하여라.BFS를 통해 완전탐색 진행한다.무인도마다의 먹이를