현재상황에서 지금 당장 좋은 것만 고르는 방법
그리디 해법: 그리디 알고리즘 문제에서는 문제 풀이를 위한 최소한의 아이디어를 떠올리게 하므로 정당성 분석이 중요하다.(가장 좋은 것만 반복적으로 선택했을때 최적의 해를 구할수 있는지 확인해야한다.)
가장 큰값만 고르는 경우:5->10->2가 선택된다(5->7->9가 가장 크지만)
▶️일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많다.
▶️하지만 코딩테스트에서의 대부분의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서 이를 추론할수 있어야 풀리도록 출제된다.
즉 코테 그리디 알고리즘은 탐욕법으로 얻은 해가 최적의 해가 되는 경우에 한해서 문제를 출제한다.
최적의 해를 빠르게 구하기 위해서 가장 큰 화폐 단위부터 거슬러 준다.(->1WHY?)
500원->100원->50원->10원 순
예)1260원=500x2,100x2,50,10
(1WHY:가지고 있는 동전 중에서 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 다른 해가 나올 수 없음)
n, k = map(int, input().split())
count = 0
while n > 1 :
if n % k == 0:
n = n // k
count += 1
else:
n = n - 1
count += 1
if n == 1:
break
print(count)
n, m, k = map(int,input().split())
data = list(map(int,input().split()))
data.sort(reverse=True)
first = data[0]
second = data[1]
answer = 0
while m!=0 :
for i in range(k) :
answer += first
m -= 1
answer += second
m -= 1
print(answer)
n, m = map(int, input().split())
answer = 0
for i in range(n):
Mcards = list(map(int, input().split()))
Mnumber = min(Mcards)
if answer < Mnumber:
answer = Mnumber
print(answer)
1.좀 더 글이 가독성 좋도록 꼼꼼히 작성하기.
2.나와 다른 코드중 색다른 코드를 많이 찾아보기.
안녕하세요! 😊입니다 ㅎㅎ 전 첫날부터 좀 어렵더라고요😂 글을 너무 보기 좋게 잘 정리해주셨네요,,! 저도 가독성 좋은 글을 쓰기 위해 노력하겠습니다! 같이 화이팅해요~
안녕하세요 알고리줌입니다!~
글 잘 봤습니다.
문제 1
입력예시
5 9 3
2 4 5 4 6
이렇게 6 6 6 5 6 6 6 5 6 (정답) 학우님 코드는 6 6 6 5 6 6 6 5 6 (6 6)<- for 반복문에서 못나옴 오류가 생깁니다..!
문제 2 숫자 카드게임 코드를 읽어보다 의문이 생겨 직접 돌려봤더니
입력 예시1은 잘 돌아가는데 입력 예시 2는 출력이 4가 됩니다.
한번 확인 부탁드려요...!!😊