[Python] 백준 알고리즘 온라인 저지 1541 잃어버린 괄호 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 괄호를 쳐서 최소가 되는 값을 구하기 위해서는 마이너스되는 값이 클수록 값은 작아지므로 -를 기준으로 문제를 풀이했다. 알고리즘 분류 수학 문자열 그리디 알고리즘 파싱 소스코드 import sys input = sys.stdin.readline exp = input().split("-") s = 0 # 마이너스가 나오기 전까지..
[Python] 백준 알고리즘 온라인 저지 14002 가장 긴 증가하는 부분 수열 4 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 수열을 받으면 그중 길이가 제일 긴 증가하는 수열을 구하는 문제이다. 11053번 문제와 유사하지만 그 수열까지 출력하여야 한다. 필자는 순서가 꼬여 이 문제부터 접하고 11053번을 풀게 되었다;; 소스코드 import sys i..
[Python] 백준 알고리즘 온라인 저지 1173 운동 https://www.acmicpc.net/problem/1173 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net 문제를 잘 읽고 while문과 조건문을 잘 이용하여 구현하는 문제였다. 소스코드 import sys input = sys.stdin.readline N, m, M, T, R = map(int, input().split()) time = total = 0 heart = m if m + T > M: print(-1) else: while time < N: if heart + T
[Python] 백준 알고리즘 온라인 저지 11399 ATM https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 알고리즘 분류 그리디 알고리즘 정렬 문제에서는 시간이 최소로 드는 방법을 요구하고 있다. 방법은 하나로 시간이 적게 드는 사람 순서대로 배치하는 것이다. 소스코드 import sys input = sys.stdin.readline n = int(input()) minutes = sorted(list(map(int, input().split()))) result = [..
[Python] 백준 알고리즘 온라인 저지 2193 이친수 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제에 제시된 조건을 만족하는 n을 작은 수부터 계산해보니 쉽게 점화식을 만들 수 있었다. 소스코드 import sys input = sys.stdin.readline n = int(input()) dp = [0, 1, 1] for i in range(3, n+1): dp.append(dp[i-2]+dp[i-1]) print(d..
[Python] 백준 알고리즘 온라인 저지 10844 쉬운 계단 수 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net DP 문제로 증가와 감소 상관없이 1씩 계단식으로 이루어진 수의 경우를 구하는 문제로 0은 제일 앞에 올 수 없다. 쉬운 이라는 타이틀이 무색하게 어려웠다.😅 소스코드 import sys input = sys.stdin.readline n = int(input()) dp = [[0] * 10 for _ in range(n+1)] for i in range(1, 10): dp[1][i] = 1 for i in range(2, n+1): for j..