Python 390

[baekjoon] 백준 2529번(파이썬): 부등호

문제 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net 알고리즘 - 백 트래킹 문제로 부등호를 확인하면서 숫자를 넣어줘 부등호에 맞는 숫자를 합친 문자열을 확인한다. 코드 import sys # 부등호 확인 함수 def poss(i, j, l): if l == ">": return i > j else: return i < j # backTracking def backTracking(idx, word): global mx, mn # idx가 부등호 문자의 개수보다 크다면 모든 숫자를 알맞게 넣은 것 if idx..

CodingTest/Baekjoon 2022.02.12

[baekjoon] 백준 2304번(파이썬): 창고 다각형

문제 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 알고리즘 - 반복문을 통해 각 체력내에 얻을 수 있는 기쁨을 확인한다. - 현재 체력으로 인사를 못한다면 현재 기쁨을 이전 기쁨으로 초기화한다. - 현재 체력으로 인사를 할 수 있다면 더 큰 값으로 기쁨을 초기화한다. 코드 import sys n = int(sys.stdin.readline()) hp = list(map(int, sys.stdin.readline().split())) joy = list(map(int, sys.stdin.readline()..

CodingTest/Baekjoon 2022.02.12

[baekjoon] 백준 2304번(파이썬): 창고 다각형

문제 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 알고리즘 - 반복문을 통해 최대 높이를 구한다. - 최대 높이를 포함하여 왼쪽 상자부터 확인하여 창고의 넓이를 추가한다. - 반대로 오른쪽 상자부터 최대 높이를 제외하여 똑같은 방법으로 창고의 넓이를 추가한다. - 왼쪽/오른쪽 상자부터 확인하여 구해진 창고의 넓이를 출력한다. 코드 import sys n = int(sys.stdin.readline()) storage_list = [0] * 1001 max_h = 0 # 최대 높이 max_h..

CodingTest/Baekjoon 2022.02.10

[baekjoon] 백준 1965번(파이썬): 상자넣기

문제 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 알고리즘 - 반복문을 통해 모든 상자의 크기를 확인한다. - 다음 상자의 크기와 그전에 있는 모든 상자의 크기를 비교한다. - 마지막 상자의 크기가 다음 크기에 다음 상자의 크기보다 크다면 상자의 계수를 카운트한다. 코드 import sys n = int(sys.stdin.readline()) box = list(map(int, sys.stdin.readline().split())) # 상자안에 넣어진 상자의 계수 result = [1] * n for i in ra..

CodingTest/Baekjoon 2022.02.09

[baekjoon] 백준 1024번(파이썬): 수열의 합

문제 1024번: 수열의 합 첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다. www.acmicpc.net 알고리즘 - 수열의 합 공식을 통해 식을 도출해낸다. n = x + (x+1) + (x+2) +... + (x+(l-1)) n = (x * l) + (1부터 l - 1까지 합) n = (x * l) + t x = (n - t) / l - 반복문을 통해 모든 길이를 확인한다. - 길이를 확인하면서 조건이 맞는지 확인 - 조건이 맞으면 그때 초기값과 길이를 가지고 반복하여 출력 코드 import sys n, l = map(int, sys.stdin.readline().split()) # 식 # n =..

CodingTest/Baekjoon 2022.02.08

[baekjoon] 백준 1660번(파이썬): 캡틴 이다솜

문제 1660번: 캡틴 이다솜 캡틴 이다솜은 자신의 해적선에 적을 공격하기 위한 대포알을 많이 보관해 놓는다. 다솜이는 미적감각이 뛰어나기 때문에, 대포알은 반드시 사면체 모양으로 쌓아놓아야 한다고 생각한다. 사면 www.acmicpc.net 알고리즘 - 반복문을 통해 각 사면체를 만드는 데 사용되는 대포알의 개수를 list에 저장한다. - 반복문을 통해 대포알의 개수에 따라 만들 수 있는 사면체를 확인한다. - 현재 대포알의 개수로 만들 수 있는 사면체중 제일 작은 값을 dp에 저장한다. 코드 pypy3 해결 # pypy3 해결(python3 시간초과) import sys n = int(sys.stdin.readline()) balls = [] # 만들 수 있는 사면체 ball = 0 # 반복문을 통해..

CodingTest/Baekjoon 2022.02.07

[baekjoon] 백준 2502번(파이썬): 떡 먹는 호랑이

문제 2502번: 떡 먹는 호랑이 첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤A≤B)가 존재한다. www.acmicpc.net 알고리즘 - 반복문을 통해 조건에 맞는 모든 경우를 탐색한다. - 할머니가 호랑이를 처음 만난 날에 준 떡의 개수 A, 그 다음 날에 호랑이에게 준 떡의 개수 B => 1≤A≤B이다. - d일까지 할머니가 떡을 주는 경우를 탐색하고 d 일어날 호랑이에게 준 떡이 k 개라면 A와 B를 출력하고 종료한다. 코드 import sys d, k = map(int, sys.stdin.readline().split()) # 반복문을 통해 조건에 맞는 모든 경우를 탐..

CodingTest/Baekjoon 2022.02.06

[baekjoon] 백준 2410번(파이썬): 2의 멱수의 합

문제 2410번: 2의 멱수의 합 첫째 줄에 경우의 수를 출력한다. 답이 커질 수 있으므로 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 알고리즘 - 2의 제곱일때마다 전체 dp에+이전 dp값을 더해준다. 코드 import sys n = int(sys.stdin.readline()) dp = [0] * (n + 1) dp[0] = 1 # 1 => 1, 1가지 # 2 => 2 11, 2가지 # 3 => 21 111, 2가지 # 4 => 4 22 211 1111, 4가지 # 5 => 41 221 2111 11111 4가지 two = [2 ** k for k in range(21)] # 2^k # 반복문을 통해 2의 멱수의 합을 구한다. for i in two: if i

CodingTest/Baekjoon 2022.02.03

[baekjoon] 백준 2302번(파이썬): 극장 좌석

문제 2302번: 극장 좌석 주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1) www.acmicpc.net 알고리즘 - 점화식을 구하면 쉽게 풀 수 있는 문제이다. - 좌석이 1개일 때 경우의 수는 1개이고 좌석이 2개일 때 경우의 수는 2개이고 좌석이 3개일 때 경우의 수는 3개이다. - 점화식: dp[n] = dp[n - 1] + dp[n - 2] - 각 좌석의 개수에 따라 경우의 수를 구했다면 vip 유무에 따라 경우의 수를 곱해주면 된다. - 반복문을 통해 vip 사이에 그룹에 들어가는 경우의 수를 확인해서 곱해줘 출력한다. - vip가 없다면 n좌석의 경우의 수를 ..

CodingTest/Baekjoon 2022.02.02

[baekjoon] 백준 2294번(파이썬): 동전 2

문제 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net 알고리즘 - 반복문을 통해 코인으로 1부터 k까지의 가치를 만들 수 있는지 확인 - 현재 코인으로 현재 가치를 만들 수 있다면 이전에 현재 가치를 만든 코인의 개수와 i-j를 만든 코인의 개수에서 +1 해준 값을 비교하여 더 적게 코인을 사용한 개수로 초기화한다. - 반복문이 끝나고 k 가치를 구하기 위해 사용한 코인의 개수가 100001개라면 불가능한 경우인 것이고 아니라면 k 가치를 구하기 위해 사용한 코인의 개수를 출력한..

CodingTest/Baekjoon 2022.02.01