본문 바로가기

알고리즘 풀이58

그리디 알고리즘_ 모험가 길드 이코테 N = int(input()) S = list(map(int, input().split())) S.sort() result = 0 # 총 그룹의 수 count = 0 # 현재 그룹에 포함된 모험가 수 for i in S: count += 1 # 현재 그룹에 해당 모험가를 포함 if count >= i: # 현재 그룹에 포함된 모험가의 수가 현재 공포도 이상이면 그룹 결성 result += 1 # 그룹 수 증가 count = 0 # 모험가의 수 초기화 print(result) 2022. 12. 27.
그리디 알고리즘_ 곱하기 혹은 더하기 문제 S = input() value = 0 for i in S: j = int(i) if j 2022. 12. 27.
그리디 알고리즘_이코테 1이 될 때까지 # N,K를 공백을 기준으로 구분하여 입력 받기 N, K = map(int, input().split()) count = 0 # N이 1이 될 때 까지 반복문 실행 while N != 1: # N이 K로 나누어 떨어지면 아래 조건문 실행 if N % K == 0: N = N // K count += 1 else: N = N - 1 count += 1 print(count) 2022. 12. 27.
그리디 알고리즘 그리디 알고리즘은 현재 상황에서 좋은 것만 고르는 방법을 의미. 거스름돈 1260원을 화폐 500,100,50,10원 으로 거슬러 줄 때 몇개의 동전이 필요한지 구하는 문제. n = 1260 count = 0 # 큰 단위의 화폐부터 차례대로 확인하기 array = [500, 100, 50, 10] for coin in array: count += n // coin # count에 n을 coin으로 나눈 몫을 저장 n %= coin # n에 n을 coin으로 나눈 나머지값을 저장 print(count) 2022. 12. 27.
[백준 / Python] 1654번: 랜선 자르기 - jini https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예.. 2022. 7. 11.
[백준 / Python] 10816번: 숫자 카드 2 - jini https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다... 2022. 7. 11.