ps
-
-
[백준] 11497 통나무 건너뛰기 with PythonPS 2021. 12. 6. 21:07
📌 BOJ 11497 통나무 건너뛰기 💡 조건 첫 줄에 통나무의 개수를 나타내는 정수 (5 ≤ N ≤ 10,000) 둘째 줄에 각 통나무의 높이를 나타내는 정수 (1 ≤ Li ≤ 100,000) 통나무 건너뛰기의 난이도는 인접한 두 통나무 간의 높이의 차의 최댓값으로 결정된다. 가장 첫 통나무와 가장 마지막 통나무 역시 인접해 있다. 그리디 알고리즘유형의 문제 🖥 소스 코드 from sys import stdin for _ in range(int(stdin.readline())): n = int(stdin.readline()) arr = list(map(int, stdin.readline().split())) arr.sort() res = 0 for i in range(2, n): res = max(re..
-
-
[백준] 2841 외계인의 기타 연주 with PythonPS 2021. 12. 1. 21:51
📌 BOJ 2841 외계인의 기타 연주 💡 조건 멜로디는 음의 연속이고, 각 음은 줄에서 해당하는 프렛을 누르고 줄을 튕기면 연주할 수 있다. 어떤 줄의 프렛을 여러 개 누르고 있다면, 가장 높은 프렛의 음이 발생. 멜로디에 포함되어 있는 음의 수 N과 한 줄에 있는 프렛의 수 P가 주어진다. (N ≤ 500,000, 2 ≤ P ≤ 300,000) 2번 프렛의 음을 연주하려고 한다면, 5번과 7번을 누르던 손가락을 뗀 다음에 2번 프렛을 누르고 연주해야 한다. 손가락의 가장 적게 움직이는 회수를 구하는 프로그램을 작성. Stack, 자료구조 유형의 문제 🖥 소스 코드 from sys import stdin import heapq n, p = map(int, stdin.readline().split()) ..
-
-
[Programmers] 자물쇠와 열쇠 with PythonPS 2021. 11. 29. 20:54
📌 Programmers - [자물쇠와 열쇠] 💡 조건 key는 M x M(3 ≤ M ≤ 20, M은 자연수) 크기 2차원 배열 lock은 N x N(3 ≤ N ≤ 20, N은 자연수) 크기 2차원 배열 M은 항상 N 이하, key와 lock의 원소는 0 또는 1 자물쇠는 홈이 있으며, 열쇠도 돌기가 있다. 열쇠는 회전이 가능하다. 자물쇠 부분이 회전할 수 있는 열쇠와 겹쳐져서 모두 1이 된다면 열 수 있으니 True, 열 수 없다면 False를 반환 구현 & 시뮬레이션 유형의 문제 🖥 소스 코드 def turn_key(l, key): new_key = [item[:] for item in key] for i in range(l): for j in range(l): new_key[i][j] = key[l..
-
-
[Programmers] 후보키 with PythonPS 2021. 11. 27. 21:30
📌 Programmers - [후보키] 💡 조건 relation 은 2차원 문자열 배열이다. 1
-
[백준] 14725 개미굴 with PythonPS 2021. 11. 21. 17:49
📌 BOJ 14725 개미굴 💡 조건 첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N >> (1 ≤ N ≤ 1000) 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이 정보 개수 K >> (1 ≤ K ≤ 15) 다음 K개의 입력은 로봇 개미가 왼쪽부터 순서대로 각 층마다 지나온 방에 있는 먹이 정보이며 먹이 이름 길이 t >> (1 ≤ t ≤ 15) 트라이(Trie) 자료구조를 사용하는 문제. 🖥 소스 코드 from sys import stdin n = int(stdin.readline()) class Trie: def __init__(self): self.root = {} def insert(self, s): cur_node = se..
-
[백준] 13334 철로 with PythonPS 2021. 10. 25. 23:56
📌 BOJ 13334 철로 💡 조건 사람 수를 나타내는 양의 정수 n (1 ≤ n ≤ 100,000) n개의 각 줄에 정수 쌍 (hi, oi)가 주어진다. −100,000,000 ≤ hi ≤ 100,000,000 −100,000,000 ≤ oi ≤ 100,000,000 oi != hi 철로의 길이를 나타내는 정수 d (1 ≤ d ≤ 200,000,000) 집과 사무실 모두가 철로 길이 안에 들어갈 수 있는 최대의 개수를 구하는 문제. 우선순위 큐, 즉 자료구조를 활용하는 문제. 🖥 소스 코드 from sys import stdin import heapq n = int(stdin.readline()) roads, data = [], [] for _ in range(n): data.append(sorted(..