본문 바로가기

분류 전체보기

(254)
파이썬) 로봇 프로젝트 - BOJ https://www.acmicpc.net/problem/3649 import sys input = sys.stdin.readline while True: try: x = int(input()) * 10000000 n = int(input()) lego = [int(input()) for _ in range(n)] lego.sort() i, j = 0, n-1 flag = True while i < j: if lego[i] + lego[j] == x: print('yes %d %d' %(lego[i], lego[j])) flag = False break elif lego[i] + lego[j] < x: i += 1 else: j -= 1 if flag: print('danger') except: brea..
파이썬) 최대 힙 - BOJ https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 힙은 흔히 최소값을 출력하고 제거할 수 있다. 그렇다면 힙을 이용해 최대값을 출력할 수 있을까? 정답은 바로 아래 코드이다 import heapq import sys input = sys.stdin.readline n = int(input()) heap = [] for _ in range(n): x = int(input()) if x == 0: if not heap: pri..
파이썬) 회전초밥 - BOJ https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 이 문제는 꽤나 까다로웠다. 문제 이해와 풀이에는 무척 쉬웠지만 시간초과가 많이 발생하는 문제였다. 우선 처음 제출한 코드이다. from collections import deque import sys input = sys.stdin.readline n, d, k, c = map(int, input().split()) arr = [] for _ in rang..
파이썬) 비슷한 단어 - BOJ https://www.acmicpc.net/problem/2607 2607번: 비슷한 단어 첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이 www.acmicpc.net from copy import deepcopy from collections import Counter n = int(input()) answer = 0 arr = [] for i in range(n): s = input() if i == 0: for j in s: arr.append(j) else: cop = deepcopy(arr) new = [j for j in s] cnt = 0 for ..
파이썬) 공유기 설치 - BOJ https://www.acmicpc.net/problem/2110 n, c = map(int, input().split()) arr = [] for i in range(n): arr.append(int(input())) arr.sort() start = 1 end = arr[-1] - arr[0] #최대거리 answer = 0 while start = last + mid: #거리가 mid만큼 떨어져잇다면 cnt += 1 last = arr[i] if cnt >= c: #설치한게 주어진 조건보다 작거나 같으면 #거리를 더 줄여도 됨 start = mid + 1 answer = mid else: #반대라면 거리를 좀 늘려야 됨 end = mid - 1 print(answer) 이 문제는 무엇을 mid로 둘지..
파이썬)체스판 위의 공 - BOJ(실패) https://www.acmicpc.net/problem/16957 16957번: 체스판 위의 공 크기가 R×C인 체스판이 있고, 체스판의 각 칸에는 정수가 하나씩 적혀있다. 체스판에 적혀있는 정수는 모두 서로 다르다. 체스판의 각 칸 위에 공을 하나씩 놓는다. 이제 공은 다음과 같은 규칙 www.acmicpc.net import sys input = sys.stdin.readline r, c = map(int, input().split()) arr = [] board = [] for _ in range(r): a = [0] * c board.append(a) arr.append(list(map(int, input().split()))) dx = [0, 0, 1, -1, -1, -1, 1, 1] dy =..
파이선) 개똥벌레 - BOJ https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net n, h = map(int, input().split()) arr = [] top = [] bottom = [] for i in range(n): if i % 2 == 0: bottom.append(int(input())) else: top.append(int(input())) top.sort() bottom.sort() start = 1 end = h cnt = 0 min_v = int('inf')..
파이썬) 2048(Easy) - BOJ https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net from copy import deepcopy n = int(input()) result = 0 arr = [] for _ in range(n): arr.append(list(map(int, input().split()))) def check(board): mm = 0 for i in board: mm = max(max(i), mm) return mm def up(bo..