목록algorithm/baekjoon (96)
하루일문

문제 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칸 ..
문제 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 DFS # DFS def dfs(t, money): global pay # 맨 끝으로 간다면 리턴 & money가 pay보다 크다면 저장 if t == N: if pay < money: pay = money return # t가 N과 동일해 질 때까지 더해준다 dfs(t + 1, money) # 리턴 후 N을 넘지 않는 범위 안에서 더해준다. if t + li[t][0]
문제 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 코드 T = int(input()) li = [] for _ in range(T): li.append(list(map(int, input().split()))) # 1행부터(0행의 수는 하나니까) 아래로 내려간다 for i in range(1, T): # i행의 갯수만큼 for문을 돈다 for j in range(len(li[i])): # j가 T-1 안에 있다면 a는 한 행 위를 저장한다. 아니라면 0을준다.(어차리 아래 max()로 인해 비교되고 탈락할 수) if 0
문제 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 코드 n = int(input()) num = 0 num_li = [0, 1] for i in range(2, n + 1): num = num_li[i-2] + num_li[i-1] num_li.append(num) print(num_li[n]) 해설 그리디 문제이다. 하나하나를 더해서 그 값을 구하는 문제로 리스트에 넣어서 순서에 맞게 더해주는 방식으로 풀이하였다
문제 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 독특하게 점수가 나오는 문제로 시간초과가 나와도 알려주진 않으나 58점이라면 시간 초과이다. 코드 n = int(input()) load = list(map(int, input().split())) city = list(map(int, input().split())) dic = {} m = int(10e9) for i in range(len(load)): if not dic: ..
문제 14645번: 와이버스 부릉부릉 첫 줄에 출발역과 종착역을 제외한 정거장의 수 N(1 ≤ N ≤ 100,000)과 출발역에서 탑승하는 사람의 수 K(1 ≤ K ≤ 10,000)가 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 줄마다 i번째 정거장에서 탑승 www.acmicpc.net 코드 n, k = map(int, input().split()) for _ in range(n): bus_in, bus_out = map(int, input().split()) print("비와이") #ㅋㅋㅋㅋㅋㅋㅋ
문제 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으로 '-..