본문 바로가기

전체 글

(104)
2023.01.28 예산 백준[파이썬] https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net import sys input = sys.stdin.readline def main(): n = int(input().strip()) prices = list(map(int,input().split())) total = int(input().strip()) if sum(prices)
2023.01.28 절댓값 힙 [파이썬] https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys from heapq import heappop, heappush input = sys.stdin.readline heap = [] n = int(input().strip()) for _ in range(n): val = int(input().strip()) if val == 0: if heap: print(heappop(heap)[1]) continue p..
2023.01.27 Z 백준[파이썬] https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net import sys input = sys.stdin.readline def zzz(r,c,size,num = 0): if size == 1: return num size = size // 2 if r = size: num += (size ** 2) elif r >= size and c < size: num..
2023.01.25 경로찾기 백준[파이썬] https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net import sys from collections import defaultdict input = sys.stdin.readline def dfs(v): visited = [] discovered = [v] while discovered: pos = discovered.pop() visited.append(pos) for i in graph_dict[pos]: graph[v][i] = 1 if i in discovered or i in v..
2023.01.23 파도반 수열 백준[파이썬] https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net import sys input = sys.stdin.readline n = int(input().strip()) num_list = [int(input().strip()) for _ in range(n)] max_num = max(num_list) answer_list = [0,1,1] + ([0] * (max_num-2)) for num in num_list: if answer_list[num] ==..
2023.01.20 집합 백준[파이썬] https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net import sys input = sys.stdin.readline n = int(input().strip()) s = set() for _ in range(n): command = input().split() if len(command) == 1: if command[0] == 'all': s = set(range(1,21,1)) else: s = set() else: (command[0] == 'add' and s.add(int..
2023.01.20 마인크래프트 백준[파이썬] https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 이번 문제는 진짜 계속 시간 초과 나서 머리 잡고 있다가 pypy로 돌리니 시간초과 안나서 해결 된... 마음에 안드는 풀이법 밖에 없다. 이후 찾아 보니깐 dict로 풀거나 다른걸로 풀던데 나중에 정리 해봐야겠다. import sys input = sys.stdin.readline n, m , inven = map(int,input().split()) max_high = 0 land = [] ..
2023.01.19 연결요소의 개수 백준[파이썬] https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net import sys from collections import defaultdict input = sys.stdin.readline def find_area(n): check = [0] * (n+1) answer = n for i in graph: if check[i-1] != 0: continue visited = [] discove..