목록Python (64)
하루일문
문제 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 코드 k, n = map(int, input().split()) li = [i for i in range(1, k + 1)] li_2 = [] m = n - 1 while li: if m >= k: m = m % k li_2.append(li.pop(m)) m += n - 1 k -= 1 print('') 해설 li에 숫자를 다 넣어놓고, m += n - 1해서 그 인덱스만큼 pop하고 append해서 출력해준다.
문제 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 코드 n = input().split("-") li = [] for i in n: num = "" if "+" in i: m = i.split("+") num = 0 for j in m: num += int(j) li.append(num) else: li.append(int(i)) if len(li) > 1: num = li[0] for i in li[1:]: num += -i print(num) else: print(*li) 해설 split으로 '-..
문제 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net 코드 import sys input = sys.stdin.readline from collections import deque for _ in range(int(input())): num = int(input()) card = list(map(str, input().strip().split())) word = deque([card[0]]) for i in card[1:]: if i > word[0]: word.append(i) else: word.append..
문제 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 포인트 문제 자체는 크게 어려운 문제가 아니나, 별 생각없이 3중 for문이 되버리면 시간이 빡빡해 파이썬으로 풀기에는 시간초과가 나와 다소 어려울 수 있다. 이럴 경우 pypy3에선 맞을테니 제출 방법을 바꿔보아도 좋다. 코드 python import sys input = sys.stdin.readline N, M, B = map(int, input().split()) graph = {} for _ in range(N): for i in list(map(..
문제 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 코드 combinatiuons from itertools import permutations, combinations import sys input = sys.stdin.readline N = int(input()) graph = [list(map(int, input().split())) for _ in range(N)] # p = permutations(range(0, N), N//2) p = list(combinations(range(N), N//2)) # print(list..
문제 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 코드 N, K = map(int, input().split()) coin = [int(input()) for _ in range(N)] cnt = 0 for i in range(N - 1, -1, -1): if K // coin[i] > 0: cnt += K // coin[i] K = K % coin[i] if K == 0: break print(cnt) 해설 가장 큰 수부터 하나하나 넣는 방식..
문제 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline from collections import deque def BFS(visited, S, G): global U, D queue = deque([S]) visited[S] = 0 while queue: now = queue.popleft() if now == G: return visited[now] for i in [U, -D]: next = n..
문제 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 코드 dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline def DFS(graph, visited, i, j): visited[i][j] = 1 for _ in range(4): nx = i + dx[_] ny = j + dy[_] if 0