PS
-
[Programmers] 광고 삽입 with PythonPS 2021. 10. 17. 17:10
📌 Programmers - [광고 삽입] 💡 조건 및 풀이 동영상에 광고를 넣어야한다. 시청자가 가장 많은 구간에 광고를 넣어야한다. = 시청자 수 구간합이 가장 큰 곳에 광고를 넣어야한다. 동영상 재생시간 길이 play_time, 공익광고의 재생시간 길이 adv_time, 시청자들이 해당 동영상을 재생했던 구간 정보 logs 구간합을 구해 답을 이끌어내는 유형의 문제 play_time, adv_time은 길이 8로 고정된 문자열 play_time, adv_time은 HH:MM:SS 형식이며, 00:00:01
-
[Programmers] 순위 검색 with PythonPS 2021. 10. 14. 23:30
📌 Programmers - [순위 검색] 💡 조건 및 풀이 조건을 만족하는 사람 중 코딩테스트 점수를 X점 이상 받은 사람은 모두 몇 명인가? 를 구하는 문제 '-' 표시는 해당 조건을 고려하지 않겠다는 의미. "cpp and - and senior and pizza 500" 은 "cpp로 코딩테스트를 봤으며, 경력은 senior 이면서 소울푸드로 pizza를 선택한 지원자 중 코딩테스트 점수를 500점 이상 받은 사람은 모두 몇 명인가?" 를 의미한다. 브루트포스 알고리즘 유형의 문제에 해당한다. 🖥 소스 코드 from itertools import combinations from bisect import bisect_left def solution(info, query): answer..
-
[Programmers] 메뉴 리뉴얼 with PythonPS 2021. 10. 13. 23:58
📌 Programmers - [메뉴 리뉴얼] 💡 조건 및 풀이 orders 배열의 크기는 2 이상 20 이하. orders 배열의 각 원소는 크기가 2 이상 10 이하인 문자열. 각 문자열은 알파벳 대문자로만 이루어져 있으며 중복은 허용 안함. course 배열의 크기는 1 이상 10 이하. course 배열의 각 원소는 2 이상 10 이하인 자연수가 오름차순으로 정렬 정답은 각 코스요리 메뉴의 구성을 문자열 형식으로 배열에 담아 사전 순으로 오름차순 정렬해서 return 배열의 각 원소에 저장된 문자열 또한 알파벳 오름차순으로 정렬 만약 가장 많이 함께 주문된 메뉴 구성이 여러 개라면, 모두 배열에 담아 return 무조건 return 하는 배열의 길이가 1 이상 Python 조합(combination..
-
[백준] 10775 공항 with PythonPS 2021. 10. 13. 23:23
📌 BOJ 10775 공항 💡 조건 및 풀이 공항에는 G개의 게이트가 있으며 각각은 1에서 G까지의 번호를 가지고 있다. 공항에는 P개의 비행기가 순서대로 도착할 예정. i번째 비행기를 1번부터 gi (1 ≤ gi ≤ G) 번째 게이트중 하나에 영구적으로 도킹 비행기가 어느 게이트에도 도킹할 수 없다면 공항이 폐쇄되고, 이후 어떤 비행기도 도착할 수 없다. Union - Find 알고리즘 유형의 문제 비행기를 최대 몇 대 도킹시킬 수 있는지 구하는 문제. 게이트의 수 G (1 ≤ G ≤ 105) 비행기의 수 P (1 ≤ P ≤ 105) P개의 줄에 gi (1 ≤ gi ≤ G) 🖥 소스 코드 from sys import stdin def find_parent(parent, x): if parent[x] !..
-
[백준] 2143 두 배열의 합 with PythonPS 2021. 10. 12. 00:00
📌 BOJ 2143 두 배열의 합 💡 조건 및 풀이 (-1,000,000,000 ≤ T ≤ 1,000,000,000) (1 ≤ n ≤ 1,000) (1 ≤ m ≤ 1,000) 누적합 유형의 문제 두 배열의 부분배열을 사용하여 합을 구해 T를 만들 수 있는 개수를 구한다. 🖥 소스 코드 from sys import stdin, setrecursionlimit setrecursionlimit(int(1e9)) t = int(stdin.readline()) n = int(stdin.readline()) A = list(map(int, stdin.readline().split())) m = int(stdin.readline()) B = list(map(int, stdin.readline().split())) A..
-
[백준] 1967 트리의 지름 with PythonPS 2021. 10. 11. 23:34
📌 BOJ 1967 트리의 지름 💡 조건 및 풀이 노드의 개수 (1 ≤ n ≤ 10,000) 첫 번째 정수는 간선이 연결하는 두 노드 중 부모 노드의 번호 두 번째 정수는 자식 노드 세 번째 정수는 간선의 가중치 부모 노드의 번호가 작은 것이 먼저 입력되고, 부모 노드의 번호가 같으면 자식 노드의 번호가 작은 것이 먼저 입력된다. BFS 유형의 문제 루트 노드의 번호는 항상 1 간선의 가중치는 100보다 크지 않은 양의 정수 트리에 존재하는 모든 경로들 중, 가장 긴 경로를 출력하는 문제이다. 🖥 소스 코드 from sys import stdin from collections import deque n = int(stdin.readline()) tree = [[] for _ in range(n + 1)]..
-
[백준] 1799 비숍 with PythonPS 2021. 10. 11. 21:44
📌 BOJ 1799 비숍 💡 조건 및 풀이 체스판의 크기는 10 이하의 자연수 비숍을 놓을 수 있는 곳에는 1, 비숍을 놓을 수 없는 곳에는 0 대각선 방향으로 움직이는 비숍이 이동할 수 있는 경로에 비숍을 놓을 수 없다. 백트래킹 유형의 문제 🖥 소스 코드 from sys import stdin n = int(stdin.readline()) chess_map = [] black = [] white = [] color = [[0] * n for _ in range(n)] for i in range(n): for j in range(n): color[i][j] = (i % 2 == 0 and j % 2 == 0) or (i % 2 != 0 and j % 2 != 0) for i in range(n): ch..
-
[백준] 6987 월드컵 with PythonPS 2021. 9. 22. 23:14
📌 BOJ 6987 월드컵 💡 조건 및 풀이 6개의 국가가 있고, 총 18번의 경기를 한다. 승, 무, 패의 결과가 있으며, 승, 무, 패의 수는 6보다 작거나 같은 자연수 또는 0 백트래킹 유형의 문제 입력은 네 줄로 들어오며, 각 줄에 대해 가능한 결과 1, 불가능한 결과 0 을출력하는 문제이다 🖥 소스 코드 from sys import stdin from itertools import combinations as cb def solution(round): global ans if round == 15: ans = 1 for sub in res: if sub.count(0) != 3: ans = 0 break return t1, t2 = game[round] for x, y in ((0, 2), (1..
-
-
[백준] 9934 완전 이진 트리 with PythonPS 2021. 9. 12. 23:18
📌 BOJ 9934 완전 이진 트리 💡 조건 및 풀이 이진 트리의 깊이를 나타내는 1