목록백준 (73)
하루일문
문제 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 코드 # dfs로 노력해봤으나 시간 관계상 전체탐색 방향을 시간초과로 통과를 하지 못함 # visited는 따로 필요 없는 문제라 사용 X # from collections import deque가 그냥 import deque 보다 빠름 from collections import deque import sys input = sys.stdin.readline # 3차원이니 z를 사용 dz = [0, 0, 0, 0, 1, -1] dx =..
문제 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 def dfs(x): global Queen # 맨 끝 행까지 온 경우 모두 놓을 수 있는 자리이니 += 1 if x == n: Queen += 1 return # 행 기준으로 돈다(행이 겹치지 않도록) for y in range(n): # 열과 좌우 대각선에 겹치는 부분이 없는지 본다 if not visited_1[y] and not visited_2[x+y] and not visited_3[x-y]: # 돌았다면 체크 후 다음 행으로 넘어간다 visited_1[y..
문제 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 코드 n, k = map(int, input().split()) tool = [[0,0]] + [list(map(int, input().split())) for _ in range(n)] bag = [[0] * (k + 1) for _ in range(n+1)] # 전체 물품 수 for i in range(1, n+1): # 가방에 담을 수 있는 최대 무게 for j in range(1, k+..
문제 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 코드 import sys input = sys.stdin.readline k, n = map(int, input().split()) li = [] for i in range(k): li.append(int(input())) # long이 최대 길이는 max(li) short, long = 1, max(li) # short가 long보다 길어지면 멈춰 while short = n: short = cut + 1 # 개수보다 적다면 ..
문제 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10 ** 6) input = sys.stdin.readline dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] def dfs(x, y): if visited[x][y]: return visited[x][y] visited[x][y] = 1 for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
문제 13777번: Hunt The Rabbit For each line of input, output the numbers of all envelopes opened, in the order they were opened, until the rabbit is found. Each number must be on the same line separated by a space from the previous number. www.acmicpc.net 코드 while True: start, end = 1, 50 N = int(input()) # N이 0이면 반복을 끝낸다 if N == 0: break while True: # start와 end의 중간을 구한다 n = (start + end) // 2 # 중..
문제 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 풀이 함수(내 풀이) def pleasuer(l, j, i): global L, J, joy # 마지막인덱스에 도착했을때 들어간다 if i == n: # joy보다 커졌을때 저장한다 if joy 0: pl..

문제 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n = int(input()) stair = [0] score = [0] * (n+1) for i in range(n): stair.append(int(input())) # 한칸에서 두번째 칸은 점화식에서 이용되는 수이자 max값이 바뀔일이 없으니 먼저 설정한다. if i < 2: score[i+1] = sum(stair[0:i+2]) # 설정이 인된 3부터 돌아준다 for i in range(3, n+1): # score[i-2]+stair[i] : 1칸 2칸 ..