Python/코딩 문제(34)
-
[SWEA] 5209. 최소 생산 비용
# 문제 설명 # 입출력 예시 입력 출력 3 3 73 21 21 11 59 40 24 31 83 5 93 4 65 31 66 63 12 60 60 84 87 57 44 35 20 12 9 40 12 40 60 21 3 49 54 6 55 83 32 79 53 70 77 88 80 93 42 29 54 26 5 10 25 94 77 92 82 83 11 51 84 11 21 62 45 58 37 88 13 34 41 4 #1 63 #2 78 #3 129 # 코드 풀이. 1차 시도- sorted by asc from itertools import permutations # 시간초과(4/10)- 2초이내 for tc in range(int(input())): n = int(input()) p = [list(m..
2022.03.17 -
[백준] 19942. 다이어트
# 문제 설명 # 입출력 예시 입력 출력 6 100 70 90 10 30 55 10 8 100 60 10 10 2 70 10 80 50 0 50 40 30 30 8 60 60 10 70 2 120 20 70 50 4 4 134 2 4 6 # 코드 풀이 n = int(input()) mp,mf,ms,mv = list(map(int, input().split(' '))) diets = [list(map(int, input().split(' '))) for _ in range(n)] costs = [] cost_min = 9999 def dfs(path, rest): global costs, cost_min sum_x = sum([diets[i][4] for i in path]) if len([x for x ..
2022.03.16 -
[리트코드] 704. Binary Search
# 문제 설명 오름차순으로 정렬된 정수 배열 nums 와 정수 target 이 주어질 때, nums에서 target 값을 찾는 함수를 구현해라. 만약 target 값이 존재한다면, 그 index를 반환한다. 그렇지 않으면 -1 을 반환한다. 실행시간 복잡도는 O(log n) 의 알고리즘 이어야 한다. # 입출력 예시 입력 출력 nums = [-1,0,3,5,9,12] target = 9 4 nums = [-1,0,3,5,9,12] target = 2 -1 # 코드 풀이 1. 재귀 풀이 class Solution: def search(self, nums: List[int], target: int) -> int: def bisearch(left, right): if left > right: return -1..
2022.03.14 -
[백준] 13398. 연속합 2
# 문제 설명 n개의 정수로 이루어진 임의의 수열이 주어질 때, 이 중 연속된 몇 개의 수를 선택하여 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 수는 한 개 이상 선택해야 하며, 수열에서 수를 하나 제거할 수 있다. (또한 제거하지 않아도 된다.) # 입출력 예시 입력 출력 10 10 -4 3 1 5 6 -35 12 21 -1 54 # 내 풀이 n = int(input()) li = list(map(int, input().split(' '))) li.remove(min(li)) # ? dp = max(max(li), sum(li)) for i in range(2, n): for j in range(n-i+1): dp = max(dp, sum(li[i:j+i])) print(dp) -> 시간 초과..
2022.03.10 -
[리트코드] 662. 이진트리의 최대 너비
# 문제 설명 이진트리의 root가 주어질 때, 주어진 트리의 최대 너비를 반환해라. 여기서 최대 너비란 모든 level들 중에 최대로 하는 너비를 말한다. 한 level의 너비는 그 끝의 노드들 간의 길이로 정의한다. 노드들 사이의 null 노드들도 또한 길이 계산에 포함한다. # 입출력 예시 입력 출력 [1,3,2,5,3,null,9] 4 [1,3,null,5,3] 2 [1,3,2,5] 2 # 코드 풀이 1. queue를 이용하여 index 계산 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left #..
2022.03.08 -
백준 3977. 축구 전술
# 문제 설명 세계 축구 대회의 전술을 짜는 감독 도현이는 자신의 팀이 우승하도록 전략을 짠다. 경기장을 여러 개의 구역으로 나누어, 어떤 선수가 A 구역에서 B 구역으로 움직이는 것을 (A, B)로 표현한다. 도현이는 다른 모든구역에 도달할 수 있는 시작 구역을 찾은 뒤, 이 움직임을 따라가라고 지시한다. 선수들이 시작구역을 찾는 것을 어려워하는데, 가능한 모든 시작 구역을 찾아 오름차순으로 하나씩 출력해라. 단, 그러한 시작구역이 없다면 "Confused"를 출력한다. # 입출력 예시 입력 출력 2 4 4 0 1 1 2 2 0 2 3 4 4 0 3 1 0 2 0 2 3 0 1 2 Confused # 코드 풀이 1. 모든 정점에 대해 DFS 탐색 (타잔 알고리즘) from collections impo..
2022.03.04