본문 바로가기

python67

기타줄 - 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.
BeautifulSoup - 특정 태그값 가져오기 import requests from bs4 import BeautifulSoup requests 와 BeautifulSoup 모듈을 가져온다 URL = "https://lolchess.gg/" 사용하고 싶은 주소를 가져온다 예제로 사용할 주소는 알바천국 주소이다 get_URL = requests.get(URL) print(get_URL, type(get_URL)) soup = BeautifulSoup(get_URL.text, "html.parser") print(str(soup)[:100]) print(type(soup)) TFT Stats, Leaderboards, League requests 로 주소를 사용가능하게 받아온다 bs4 로 url을 텍스트로 받아온다. (자료형은 이고, 굉장히 내용이 많기.. 2022. 7. 20.
Codeforces Round #804 (Div. 2) A. The Third Three Number Problem 처음에 시험에 도전하면서 특정 규칙을 찾아내다가 실패하여 시험이 끝난 후, 다른사람의 포스팅을 도움받았다. https://lem0nad3.tistory.com/m/103 Codeforces Round #804 (Div. 2) https://codeforces.com/contest/1699 Dashboard - Codeforces Round #804 (Div. 2) - Codeforces codeforces.com 2000점은 확정이다. 3솔해도 오렌지 퍼포가 나오다니.. 나쁜 생활 습관으로 인한 역류성 식도염.. lem0nad3.tistory.com [규칙] 정수 n이 홀수일 경우 적절한 a, b, c는 존재하지 않는다. -1을 출력한다 정수 n이 짝수일 경우 a, b, c는 a^b = 0, b^c = .. 2022. 7. 11.
수들의 합 - 백준 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.
잃어버린 괄호 - 백준 1541 괄호를 적절히 배치하여 계산결과가 가장 작은 수가 나오도록 해야한다. "-" 가 나오면 다시 "-" 가 나올 때까지 괄호를 쳐서 계산을 해주면 가장 작은 수가 나올 수 있다. a = input() parsing = [] b = 1 # 1 : 덧셈, -1 : 뺄셈 j=0 num = '' for i in a: j+=1 if i !='-' and i!='+': num +=i elif i == '+' and b == 1: parsing.append(int(num)) num = '+' elif i == '+' and b == -1: parsing.append(int(num)) num = '-' elif i == '-': parsing.append(int(num)) num = '-' b = -1 if j == le.. 2022. 6. 22.
카드 정렬하기 - 백준 1715번 카드를 묶는 순서를 우선순위 큐로 생각하여 문제를 해결한다. 5 묶음의 카드가 10, 20, 30, 40, 50 장 있다고 생각해 보자 가장 작은 수 2개를 묶은 뒤 비교횟수에 더하고 다시 가장 작은 수 2개를 묶은 뒤 비교횟수에 더하는 행위를 카드 묶음이 1개가 남을 때 까지 반복해준다. 10 20 30 40 50 (묶기) result : 0 30 30 40 50 (묶기) result : 0 + 30 60 40 50 (묶기) result : 30 + 60 60 90 (묶기) result : 90 + 90 150 (묶기) result : 180 + 150 150 (완료) result : 330 파이썬의 heapq를 이용하면 이 과정 그대로 진행해주면 되고, 배열만 이용하여 문제를 해결하게 되면 3번째 부.. 2022. 6. 21.