분류 전체보기 219

[Baekjoon/Python] 1620번: 나는야 포켓몬 마스터 이다솜 - 효과는 굉장했다!

1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 알고리즘 분류 자료 구조 해시를 사용한 집합과 맵 SOLUTION import sys N, M = map(int, sys.stdin.readline().split()) pokemon_dict = {} for number in range(1,N+1): pokemon_name = sys.stdin.readline() pokemon_dict[pokemon_name] = number # key = pokemon_name, value = nu..

[Baekjoon/Python] 11723번: 집합 - 효과는 굉장했다!

11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 알고리즘 분류 구현 비트마스킹 SOLUTION import sys M = int(sys.stdin.readline()) S = set() for _ in range(M): cmd = sys.stdin.readline().split() order = cmd[0] # 명령어 if len(cmd) == 1: if order == "all": S = set([i for i in range(1,21)]) else: S = set() else: x = int(cmd[1]) if order == "add": S..

[Baekjoon/Python] 18111번: 마인크래프트 - 효과는 굉장했다!

18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 알고리즘 분류 구현 브루트포스 알고리즘 SOLUTION # 시간초과로 인해 pypy3으로 제출 from math import inf import sys N, M, B = map(int, input().split()) ground = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] tall = 0 ans = inf # 시간초과 방지를 위해 충분히 큰 수로 둠 for i in range(257): ..

[Baekjoon/Python] 2805번: 나무 자르기 - 효과는 굉장했다!

2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 알고리즘 분류 이분 탐색 SOLUTION # 시간초과로 인해 pypy3으로 제출 import sys N, M = map(int, sys.stdin.readline().split()) tree = list(map(int, sys.stdin.readline().split())) low, high = 1 , max(tree) while low = mid: total += i - mid # 나무를 자르고 가져갈 수 있는 총 길이 ..

[Baekjoon/Python] 1966번: 프린터 큐 - 효과는 굉장했다!

1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 알고리즘 분류 구현 자료 구조 시뮬레이션 큐 SOLUTION import sys from collections import deque for _ in range(int(sys.stdin.readline())): n, m = list(map(int, sys.stdin.readline().split())) imp = deque(map(int, sys.stdin.readline().split())) idx = deque(range(len(imp))) idx[m] = 't..

[Softeer/Python] 동계 테스트 시점 예측 ★★★☆☆ - 효과는 굉장했다!

Softeer 제한시간 : C/C++(1초), Java/Python/JS(2초) | 메모리 제한 : 256MB 입력형식 첫째 줄에는 격자 화면의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 격자 화면 위에 softeer.ai SOLUTION import sys from collections import deque def bfs(): queue = deque([[0,0]]) # 얼음의 가장자리 지점은 얼음이 존재하지 않으므로 0,0 부터 시작 visited[0][0] = 1 while queue: y, x = queue.popleft() for i in range(4): # 현재위치에서 상하좌우 탐색 nx = x + dx[i] ny = y + d..

[Softeer/Python] 스마트 물류 ★★★☆☆ - 효과는 굉장했다!

Softeer 제한시간 : C/C+/Java/Python/JS(2초) | 메모리 제한 : 512MB 현대자동차그룹은 주요 물류센터에 각종 자동화 기기를 도입하며 ‘스마트 물류’를 실현하고 있다. 최근에는 자동차 반조립 부품(KD, Knock-Dow softeer.ai SOLUTION import sys N, K = map(int, sys.stdin.readline().split()) PH_line = list(sys.stdin.readline().rstrip()) cnt = 0 for i in range(N): if PH_line[i] == "P": # 로봇일 경우에만 작동 for j in range(-K+i,K+i+1): # 로봇이 부품을 집을 수 있는 범위 안에서 왼쪽 부터 차례대로 탐색 if j <..

[Softeer/Python] GBC ★★☆☆☆ - 효과는 굉장했다!

Softeer 제한시간 : C/C++/Java/Python/JS(1초) | 메모리 제한 : 256MB 글로벌 비즈니스 센터(GBC, Global Business Center)는 현대자동차그룹 통합 사옥이다. 지하 7층, 지상 105층, 높이 약 570m의 규모로 2026년 하반기에 완 softeer.ai SOLUTION import sys N, M = map(int, sys.stdin.readline().split()) N_section = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] M_section = [list(map(int, sys.stdin.readline().split())) for _ in range(M)] total =..

[Baekjoon/Python] 1874번: 스택 수열 - 효과는 굉장했다!

1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 알고리즘 분류 자료 구조 스택 SOLUTION import sys n = int(sys.stdin.readline()) cnt = 1 num_list = [] answer = [] tmp = True for _ in range(n): num = int(sys.stdin.readline()) while cnt

[Baekjoon/Python] 1654번: 랜선 자르기 - 효과는 굉장했다!

1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 알고리즘 분류 이분 탐색 매개 변수 탐색 SOLUTION import sys K, N = map(int, sys.stdin.readline().split()) lan_lines = [int(sys.stdin.readline()) for _ in range(K)] low, high = 0, 10000000000 while low 시간복잡도 O(logN) mid = (low + high) // 2 num = 0 for lan in lan..