본문 바로가기

백준99

직사각형에서 탈출 - 1085번 계산해 볼 수 있는 4개의 거리에 대해 계산한 후 min을 씌워 최소값을 출력한다. l = list(map(int, input().split())) ans = [l[0], l[1], l[2]-l[0], l[3]-l[1]] print(min(ans)) 2022. 8. 30.
수 정렬하기 1, 2 수 정렬하기 1 - 2750번 t=int(input()) arr=[] for i in range(t): arr.append(int(input())) arr.sort() for i in arr: print(i) 수 정렬하기 2 - 2451번 1번 문제와 같은 코드를 사용해도 답은 잘 나오지만 수가 커지면 시간초과에 걸린다. 넘파이의 sort기능을 사용하면 빠르게 정렬가능하지만 기본으로 제공되는 모듈이 아니기 때문에 파일을 찾을 수 없어 런타임 에러가 뜬다. import sys input = sys.stdin.readline n = int(input()) l=[] for i in range(n): num = int(input()) l.append(num) l.sort() for i in l: print(i).. 2022. 8. 29.
1로 만들기 - 1463번 n = int(input()) l = [0] * (n+1) for i in range(2, n+1): l[i] = l[i-1] +1 if i%2 == 0: l[i] = min(l[i], l[i//2] + 1) if i%3 ==0: l[i] = min(l[i], l[i//3] + 1) print(l[n]) 2022. 8. 28.
그룹 단어 체커 - 1316번 검사할 단어들을 배열에 저장한 다음에 한개씩 꺼낸다. 검사할 단어를 처음부터 한글자씩 스캔한다. 각 글자를 검사할 때 검사용 배열(check = [ ])을 만들어 검사할 단어의 첫글자를 넣어준다. 1. check[-1]과 스캔대상인 글자 대상을 비교하여 같으면 pass해준다. 2. 같지 않으면 check에 스캔중인 글자가 있는지 check.count(글자)로 검사해준다 2-1. 만약 없으면 check.append(글자)를 해준다 2-2. 만약 있으면 문제에서 찾고자하는 그룹단어가 아님으로 바로 break를 걸어주고 출력할 결과 N에서 1을 빼준다. n = int(input()) l = [] for i in range(n): l.append(input()) result = n for i in l: chec.. 2022. 8. 17.
기타줄 - 1049번 필요한 기타줄 N개를 살 때 브랜드에서 제공하는 판매방식인 "6개 세트, 낱개" 2가지 방식에 대하여 구매할 수 있는 방식은 총 3가지 이다. 1. 모두 낱개로 산다. 2. 구매하는 기타줄이 정확히 N개가 되도록 6개 세트와 낱개로 산다. 3. 구매하는 기타줄이 N개보다 커도 되게 모두 6개 세트만 산다. 이 3가지 방식을 사용할 때 필요한 기타줄의 가격은 모든 브랜드중에서 6개 세트가 가장 싼 곳과 낱개가 가장 싼 곳의 정보만 필요하다. 구매할 수 있는 방식 3가지와 가장 싼 곳의 정보를 가져와 비용을 계산하여 가장 작은 비용을 출력한다. import math n,m = map(int,input().split()) price_6 = 1000 price_1 = 1000 for i in range(m): .. 2022. 7. 30.
크면서 작은 수 - 2992번 도움받은 곳 : https://latte-is-horse.tistory.com/379 [solved.ac 실버3] 2992_크면서 작은 수 (파이썬, 순열) https://github.com/mangbaam/CodingTest GitHub - mangbaam/CodingTest: 프로그래머스, 백준 등 코딩테스트 풀이를 기록하는 저장소입니다. 프로그래머스, 백준 등 코딩테스트 풀이를 기록하는 저장소입니다. Con.. latte-is-horse.tistory.com (나중에 다시 풀어볼 것) from itertools import permutations n = input() all = list(set(map(lambda x: ''.join(x), (permutations(n,len(n)))))) all.s.. 2022. 7. 29.
돌 게임 - 9655번 주어진 수를 1부터 하나씩 키워보면서 규칙을 찾으면 풀 수 있는 쉬운 문제이다. n = int(input()) if n%2==1: print('SK') else: print("CY") 2022. 7. 27.
뒤집기 - 백준 1439번 주어진 수를 뒤집어야 한다. 00011000 은 가운데 11만 바꿔줘도 된다. (1번) 0 에서 1로, 1 에서 0으로 바뀌는 횟수를 세면 2번이다 이 횟수에 1을 더하고 2로 나눈 몫을 버림해주면 문제가 요구하는 최소횟수를 구할 수 있다. n = input() cont = 0 a = n[0] for i in n: if i == "1": if a == "1": pass else: cont+=1 a = "1" else: if a == '1': cont+=1 a = '0' else: pass print(int((cont+1)/2)) 2022. 7. 25.
수들의 합 - 백준 1789번 서로 다른 N개의 자연수들의 합 S가 주어졌을 때 N의 최대값을 구해야한다. N에 속하는 자연수들을 하나하나 구하는 과정은 굉장히 복잡하겠지만, N의 최대값을 구하는 과정은 간단하다. 자연수들의 집합 N에 속하는 자연수들을 1, 2, 3, ... 처럼 점점 작은 것부터 커진다고 생각한다. 1부터 하나씩 커져가며 합해진 합계가 S와 우연히 같아질 수도 있고 달라질 수도 있다. 우연히 같아질 경우는 생각하기 쉬우니 넘어가고, 달라질 경우에 대하여 생각해보자. 점점 커져가는 합계가 S에 근접하여 처음으로 음수가 되는 때가 있을 것이다. 이 때까지 수를 하나씩 샌 후 1을 빼주면 그 수가 N의 최대값이 된다. 왜냐하면 점점 커져가는 합계가 S에 근접하여 처음으로 음수가 되기 직전 앞에서 더해왔던 자연수들 중 몇.. 2022. 6. 28.
30 - 백준 10610번 30의 배수를 판단해야 한다. 1의 자리가 0으로 끝나야 하고 모든 자리수의 수를 다 더했을 경우 3의 배수가 되어야 한다. 그리고 만들 수 있는 수중 가장 큰 수를 만들어줘야하는 옵션이 있다. n = input() arr=[] # 배열로 바꾸기 for i in n: arr.append(i) sum = 0 # 각 자릿수의 수 합 구하기 for i in arr: sum+=int(i) # 30의 배수인지 판단 if '0' in arr and sum%3==0: # 가장 큰수를 만들어 줘야 함으로 내림차순 정렬 arr.sort() arr = arr[::-1] # 정답 출력 for j in arr: print(j,end="") else: print(-1) https://www.acmicpc.net/problem/.. 2022. 6. 26.
로프 - 백준 2217번 각 로프가 들 수 있는 최대 중량을 담은 배열을 내림차순으로 정렬한다. 인덱스 0번부터 끝까지 누적으로 로프들이 들 수 있는 최대중량을 계산하여 maximum 이라는 변수와 비교시켜 더 크면 maximum 변수를 최신화 해준다. 처음 최대값은 인덱스 0번의 값으로 해준다. n = int(input()) arr = [] for _ in range(n): a = int(input()) arr.append(a) arr.sort() arr = arr[::-1] maximum = arr[0] for i in range(n): if arr[i]*(i+1) > maximum: maximum = arr[i]*(i+1) print(maximum) https://www.acmicpc.net/problem/2217 2217.. 2022. 6. 25.
동전 0 - 백준 11047번 동전 종류를 배열로 입력을 받는다. 오름차순으로 정렬되어있기 때문에 배열의 가장 끝인 배열[-1]의 값이 가장 큰 값이다. 동전을 최소한으로 사용하여 K를 만들어야하기 때문에 K에서 큰 값을 하나씩 빼주면서 카운팅해준다. 배열에 들어있는 수 중 가장 큰 수가 K보다 크면 배열.pop() 으로 삭제해준다. K값이 0이 될때까지 가능한한 큰 값의 동전으로 빼준다. n, k = map(int, input().split()) coin = [] c=0 for _ in range(n): coin.append(int(input())) while k>0: if coin[-1] 2022. 6. 23.