탐욕법 5

[리트코드] Greedy 알고리즘 문제: 765. Couples Holding Hands

https://leetcode.com/problems/couples-holding-hands/ Couples Holding Hands - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com ==풀이== 먼저 couple 중 하나의 숫자만 알고 있을 때 나머지 짝의 숫자를 알아내는 방법을 생각해보면 두 가지 조건이 있다. 1. 두 숫자가 1만 차이 나야 함 2. 짝수인 숫자보다 홀수인 숫자가 커야 함 위 조건을 정리하면 내가 짝수라면 내 짝은 1만큼 큰 홀수, 내가 홀..

알고리즘 2022.03.29

[리트코드] Greedy 알고리즘 문제: 134. Gas Station

https://leetcode.com/problems/gas-station/ Gas Station - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com ==풀이== 이 문제를 그리디 알고리즘으로 풀 수 있다는 걸 안다면 좀 더 쉽게 풀 수 있다. 현재 gas station에서 다음 gas station으로 넘어가기 위해서는 소비해야 하는 gas보다 충전된 gas가 더 많아야 한다. 충전된 gas는 이전부터 누적된 상태이다. 그러므로 처음 시작하는 gas statio..

알고리즘 2022.03.28

[리트코드] Greedy 알고리즘 문제: 2136. Earliest Possible Day of Full Bloom (feat. 이중배열 정렬)

https://leetcode.com/problems/earliest-possible-day-of-full-bloom/ Earliest Possible Day of Full Bloom - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com ==풀이== 이 문제는 그리디 알고리즘으로 푼다면 쉽게 풀 수 있다. plant 하는 날짜는 각 씨앗들끼리 겹칠 수 없기 때문에 plant 하는 날을 잘 분배해야 한다. 다른 씨앗이 grow 하는 동안 plant 하도록 만들어야 한..

알고리즘 2022.03.28

[Python] 프로그래머스 : 조이스틱(탐욕법)

프로그래머스에 올라온 NWERC 2010 (Northwestern Europe Programming Contest)의 문제 programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr name으로 JAZ가 주어지면 AAA에서 JAZ로 알파벳을 변환시키는 탐욕 법 알고리즘을 짜는 문제이다. 옆 칸으로 이동하는 것과 알파벳을 A에서 하나씩 변환시키는 것에 조작 횟수 1씩을 소모한다. 예시 문제 JAZ같이 [1]번째가 A..

알고리즘 2021.05.11

[Python] 프로그래머스 : 큰 수 만들기(탐욕법)

programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문자열 형식으로 된 숫자 number와 그 숫자에서 몇 개를 제외할지를 입력받아서 결과를 리턴해주는 프로그램을 짜는 문제이다. 맨 처음에 생각한 방법은 index를 이용해서 푸는 방법이었다. def solution(number, k): answer = '' numberList = [] leng = len(number) listLen = leng - k list = [] startIdx = 0 for i in number: numberList.append(i) for i in range(0, listLen): list.append(-1) for i in ..

알고리즘 2021.05.04