그리디 알고리즘 5

백준 1931번 회의실 배정 파이썬

https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 내 답안 N = int(input()) M = [] for i in range(N): start_time, end_time = map(int, input().split()) M.append((start_time, end_time)) # 끝나는 시간으로 시간대 정렬 M.sort(key=lambda x: (x[1], x[0])) et = cnt = 0 for start_time, end_time in M: if start_time >= et: et = end_time cnt += 1 print(cnt) # 끝나는 시..

BOJ/Python 2022.03.17

백준 13417번 카드문자열 파이썬

https://www.acmicpc.net/problem/13417 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net 내 답안 from collections import deque for _ in range(int(input())): N = int(input()) card = input().split() q = deque() q.append(card[0]) st = card[0] # 기준 for i in range(1, len(card)): if st >= card[i]: q.appendleft(card[i]) ..

BOJ/Python 2022.03.09

백준 2839번 설탕 배달 파이썬

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 내 답안 N = int(input()) cnt = 0 while True: if (N % 5) == 0: cnt += (N // 5) print(cnt) break N -= 3 cnt += 1 if N < 0: print(-1) break 이 문제를 동적 프로그래밍으로 푸는 방법도 있다. 하지만 DP 공부를 덜 했기 때문에 내가 생각하는 알고리즘대로 코드를 짰다. N이 5의 배수가 되는 순간 나눠주게 된다면..

BOJ/Python 2022.03.03

그리디 알고리즘 ( Greedy Algorithm ) 실전 문제 1 - Python

동빈이의 큰수의 법칙 동빈이의 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M 번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K 번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5인 46이 된다. 배열의 크기 N, 숫자가 더해지는 횟수 M, 그리고 K가 주어질 때 동빈이의 큰 수의 법칙에 따른 결과를 출력하시오. 입력조건 첫째줄에 N (2

Algorithm 2022.03.02

그리디 알고리즘 ( Greedy Algorithm )

그리디 알고리즘( Greedy Algorithm ) 그리디 알고리즘은 단순하지만 강력한 문제 해결 방법이다. 단어 그대로 번역 하면 탐욕법 이고 단순 무식하게, 탐욕적으로 문제를 푸는 알고리즘 이다. 여기서 탐욕적 이라는 말은 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다. 매 순간 가장 좋아 보이는 것을 선택하며 , 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 코딩 테스트 유형 그리디의 문제 유형은 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높다. 최단 경로를 구하는 다익스트라 알고리즘은 그리디 알고리즘으로 분류 되므로 암기가 필요한 알고리즘 이다. 그리디 알고리즘 자체가 문제 출제의 폭이 매우 넓기 때문에 다익스트라 알고리즘과 같은 특이 케이스를 제외하고는 단순 암기를 통해..

Algorithm 2022.03.01