_ 644

[백준][DP][카데인 알고리즘] 연속합

연속합 첫 풀이오류 원인if i == 0: dp[i] = max(0, numbers[i])-5 -2 -3 일때 max(dp)에서 dp[0]=0 이 채택되면 없는 값이 선택 되는 것n = int(input())numbers = list(map(int, input().split()))dp = numbers[:]for i in range(n): if i == 0: dp[i] = max(0, numbers[i]) continue dp[i] = max(numbers[i], dp[i-1]+numbers[i])print(max(dp)) 내 풀이해당 위치값부터 시작하거나이전값에서 해당위치값을 더하거나2가지 경우 중 선택n = int(input())numbers = list(ma..

코딩테스트/BOJ 2026.02.19

[프로그래머스][그리디] 큰 수 만들기

[프로그래머스][그리디] 큰 수 만들기def solution(number, k): answer = [] for num in number: while answer and k>0 and answer[-1]0: answer=answer[:-k] return ''.join(answer)풀이1. 숫자를 왼쪽부터 순차적으로 탐색하며 스택에 쌓는다.2. 새로운 숫자를 넣을 때, 스택에 나보다 작은 숫자가 있다면 그 숫자를 제거하고(k 감소) 내가 그 자리를 대신한다.3. 반복: 나보다 큰 숫자를 만나거나 k가 0이 될 때까지 앞의 숫자들을 연쇄적으로 지운다.4. 예외: 전체 탐색 후에도 k가 남았다면, 뒤에서부터 남은 k만큼 잘라낸다 (이미 내림차순인 경우).시간 복잡..

[프로그래머스] 가장 가까운 같은 글자

가장 가까운 같은 글자 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내 풀이📍주의할 점reverse.index(a)a가 index를 시도하려는 리스트안에 없으면 ValueError 발생a가 있는지 검토 후 진행def solution(s): answer = [] for idx, a in enumerate(s): reverse = list(reversed(s[:idx])) if a in reverse: i = reverse.index(a) answer.append(i + 1) else: answer.app..

[프로그래머스][구현] 서버 증설 횟수

서버 증설 횟수 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내 풀이이미 서버 1개가 돌고 있으므로 3명 부터 → 1개 추가 증설해당 인원을 위해 필요한 서버 수 : need (기본 1개 제외하고)현재 이용가능한 서버 수 = len(servers)현재 추가로 증설해야 하는 서버 수: plus 📍주의0~1 시 → idx =010~15시 사용가능한 서버 → idx=14 (14~15시) 까지만 이용 가능그러므로 bisect으로 같은 값까지 포함해서 자르게 하려면 servers에 idx값에 맞춰 넣어줘야함=> idx+k-1 (10+5-1 =14)from bisect import bisect_leftdef solu..

[백준][이분탐색] 1654.랜선 자르기

1654.랜선 자르기 내 풀이랜선 길이를 mid로 잡고 만들어질 수 있는 갯수 체크필요한 n개보다 많거나 같으면 -> 현재 랜선 길이 mid가 너무 짧은 것max값으로 저장 후l= mid+1필요한 갯수보다 적으면 -> 현재 랜선길이 mid가 너무 긴 것r=mid-1📍주의처음 랜선길이 l=0 으로 잡으면 zeroDivizonError 날 수 있음l=1 로 잡아야함k, n = map(int, input().split())lans = [int(input()) for _ in range(k)]l = 0r = max(lans)ans = 0while l = n: ans = max(ans, mid) l = mid+1 else: r = mid-1print(ans)

코딩테스트/BOJ 2025.09.26

[백준][다익스트라] 1753. 최단 경로

1753. 최단 경로 내 풀이양수의 가중치를 가지는 방향 그래프 -> 다익스트라from collections import deque, defaultdictimport heapqv, e = map(int, input().split())point = int(input())graph = defaultdict(list)for _ in range(e): start, end, val = map(int, input().split()) graph[start].append((end, val))dist = [float('inf') for _ in range(v+1)]def dijkstra(start): queue = [] heapq.heappush(queue, (0, start)) dist[st..

코딩테스트/BOJ 2025.09.26

[프로그래머스][Set][교집합] 📍비밀 코드 해독

비밀 코드 해독 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이제한10 ≤ n ≤ 301 ≤ (q의 길이 = m) ≤ 1030까지의 숫자 중 5개를 고르는 조합 하나씩 돌면서모든 쿼리랑 교집합 했을때의 갯수가 ans 랑 동일해야함시간복잡도30C5 := (24300000 / 120) =202500q 최대 10교집합 5 = 202500 * 10 * 5교집합 갯수가 다르면 outfrom itertools import combinationsdef solution(n, q, ans): answer = 0 for comb in combinations(range(1,n+1),5): for ..

[백준][DP] 2839. 설탕 배달

2839. 설탕 배달 내 풀이dp[i] = i kg을 만들 때 필요한 최소 봉지 수.기본값: dp[3] = 1, dp[5] = 1점화식 구현 방식i-3, i-5 둘 다 불가능(=0) → dp[i]도 불가능(=0)두 값이 다 가능하면 → dp[i] = min(dp[i-3], dp[i-5]) + 1한쪽만 가능하면 → 그쪽 값 + 1즉, 불가능한 값(0)은 min 비교에 넣으면 안 됨.n = int(input())dp = [0 for _ in range(max(6, n+1))]dp[3] = 1dp[5] = 1for i in range(6, n+1): if dp[i-3] == 0 and dp[i-5] == 0: continue if dp[i-3] != 0 and dp[i-5] != 0:..

코딩테스트/BOJ 2025.09.22