GitHub

https://github.com/Choidongjun0830

파이썬 알고리즘 문제 풀이 228

[백준] S1. boj1149번 RGB 거리 / 분류 : 다이나믹 프로그래밍

https://www.acmicpc.net/problem/1149 import sys input = sys.stdin.readline N = int(input()) costs = [] for i in range(N): costs.append(list(map(int, input().split()))) for i in range(1, N): costs[i][0] = min(costs[i-1][1], costs[i-1][2]) + costs[i][0] costs[i][1] = min(costs[i-1][0], costs[i-1][2]) + costs[i][1] costs[i][2] = min(costs[i-1][0], costs[i-1][1]) + costs[i][2] print(min(costs[N-1][0..

[백준] S4. boj2839번 설탕 배달 /분류 : 다이나믹 프로그래밍

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net import sys input = sys.stdin.readline N = int(input()) answer = 0 while N > 0: if N % 5 == 0: answer += N / 5 N -= 5 * (N / 5) else: N -= 3 answer += 1 if N < 0: answer = -1 print(int(answer)) 먼저 5의 배수인지 체크해주고 5의 배수가 아닌 경우 3씩 빼가면..

[백준] G5. boj7569 토마토 / 분류 : bfs

https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net import sys from collections import deque import copy input = sys.stdin.readline M, N, H = map(int,input().split()) tomatoes = [[] for i in range(H)] for i in range(H): for j in range(N): tomatoes[i].append(list..

[프로그래머스] Lv2. 소수 찾기 파이썬 / 분류 : 완전 탐색

소수 찾기 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예numbersreturn "17" 3 "011" 2 내 풀이 import math from itertools import permutations def solution(numbers): ..

[프로그래머스] Lv1. 개인정보 수집 유효기간 파이썬

개인정보 수집 유효기간 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 다음은 오늘 날짜가..

[프로그래머스] Lv1. 과일 장수 파이썬

과일 장수 문제 설명 과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) 예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매..

[프로그래머스] Lv1. 달리기 경주 파이썬

달리기 경주 문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세요. 제..

[백준] G4. boj1967 트리의 지름 / 분류 : 트리, dfs 😑

https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 트리의 지름 구하기 트리의 아무 노드에서 시작해서 dfs를 수행하여 가장 길이가 먼 노드를 구한다. 그럼 그 노드가 리프 노드가 된다. 앞에서 찾은 리프 노드에서 동일한 dfs를 수행하여 가장 긴 길이가 지름이 된다. import sys sys.setrecursionlimit(10 ** 8) input = sys.stdin.readline N = int(input()) grap..

[백준] G5. boj2293 동전1 / 분류 : DP 🙁

https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net import sys input = sys.stdin.readline n, k = map(int, input().split()) coins = [] for i in range(n): coins.append(int(input())) dp = [0] * (k+1) dp[0] = 1 for coin in coins: for i in range(coin, k+1): dp[i] += dp[i - coin] p..

728x90