알고리즘 공부 202

(Python)백준 코딩테스트 연습 - 제곱수의 합(1699)

1. 문제 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline import math # n : 제곱의 합들로 나타낼 자연수 n = int(input()) dp = [i for i in range(n+1)] for i in range(1, n+1): for j in range(1, int(math.sqrt(i)) + 1): dp[i]..

(Python)백준 코딩테스트 연습 - 랜선 자르기(1654)

1. 문제 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # k : 가지고 있는 랜선의 수 # n : 필용한 랜선의 수 k, n = map(int, input().split()) # kList : 가지고 있는 랜선의 길이 리스트 kList = [int(input()) for i in range(k)] low, high = 1, max(k..

(Python)백준 코딩테스트 연습 - 단축키 지정(1283)

1. 문제 https://www.acmicpc.net/problem/1283 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 옵션 개수 n = int(input().strip()) # nBoolList : 옵션 존재 여부를 확인할 리스트 nBoolList = [False for i in range(26)] # nList : 옵션 리스트 nList = [] for i in range(n): nList.appe..

(Python)백준 코딩테스트 연습 - 팩토리얼5(1564)

1. 문제 https://www.acmicpc.net/problem/1564 1564번: 팩토리얼5 첫째 줄에 정수 N이 주어진다. N은 1,000,000보다 작거나 같다. 또, 9보다 크거나 같다. www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 팩토리얼 대상 숫자 n = int(input().strip()) num = 1 for i in range(2, n+1): num *= i while str(num)[-1] == "0": num //= 10 num %= 100000000000000000 print(str(num)[-5:])

(Python)백준 코딩테스트 연습 - 잃어버린 괄호(1541)

1. 문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # formula : 입력받은 식 formula = input() # formulaList : -를 기준으로 만든 식 리스트 formulaList = formula.split("-") # minResult : 최소 결과값 minResult = 0 for k, v in enumerate(formulaLis..

(Python)백준 코딩테스트 연습 - 안녕(1535)

1. 문제 https://www.acmicpc.net/problem/1535 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 병문안 온 사람 수 n = int(input()) # L : 각 사람들에게 인사할 때 잃는 체력 리스트 L = list(map(int, input().split())) # J : 각 사람들에게 인사할 때 얻는 기쁨 리스트 J = list(map(int, input().split())) # maxE..

(Python)백준 코딩테스트 연습 - 세 수 고르기(1503)

1. 문제 https://www.acmicpc.net/problem/1503 1503번: 세 수 고르기 첫째 줄에 N(1 ≤ N ≤ 1,000)과 집합 S의 크기 M(0 ≤ M ≤ 50)이 주어진다. 둘째 줄에는 집합 S에 들어있는 수가 주어진다. 집합에 들어있는 수는 1,000보다 작거나 같은 자연수이고, 공백으로 구분되어 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : target 자연수 # m : 집합의 크기 n, m = map(int, input().split()) # s : 자연수 집합 s = list(map(int, input().split())) # sList : 집합에 자연수가 포함되어 있는지 확인하는 bool 리스트 s..

(Python)백준 코딩테스트 연습 - 최대 곱(1500)

1. 문제 https://www.acmicpc.net/problem/1500 1500번: 최대 곱 세준이는 정수 S와 K가 주어졌을 때, 합이 S인 K개의 양의 정수를 찾으려고 한다. 만약 여러개일 경우 그 곱을 가능한 최대로 하려고 한다. 가능한 최대의 곱을 출력한다. 만약 S=10, K=3이면, 3,3,4는 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # s : 수들의 합 # k : 수들의 개수 s, k = map(int, input().split()) # numAvg : 수 평균(정수) numAvg = s // k # numRemain : 수 평균 연산 후 나머지 numRemain = s % k # numMaxMulti : 수들의 최대 ..

(Python)백준 코딩테스트 연습 - 기타콘서트(1497)

1. 문제 https://www.acmicpc.net/problem/1497 1497번: 기타콘서트 첫째 줄에 기타의 개수 N과 곡의 개수 M이 주어진다. N은 10보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 기타의 이름과 기타가 연주할 수 있는 곡의 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque from copy import copy # n : 기타 개수 # m : 곡 개수 n, m = map(int, input().split()) # nList : 기타 별 연주 가능한 곡 리스트 nList = [] # 반복문으로 연주가능 곡 입력 for ..

(Python)백준 코딩테스트 연습 - 뒤집기 II(1456)

1. 문제 https://www.acmicpc.net/problem/1455 1455번: 뒤집기 II 세준이는 동전 뒤집기를 하려고 한다. 세준이는 동전을 N×M개 가지고 있다. 동전은 세로로 N개, 가로로 M개 크기의 직사각형에 차곡차곡 놓여져 있다. 동전의 앞면을 0이라고 하고 뒷면을 1이라고 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque # n : 동전의 세로 크기 # m : 동전의 가로 크기 n, m = map(int, input().strip().split()) # coinList : 동전 리스트 coinList = deque() # coinList에 리스트 값 추가 for i in..