[코딩테스트/프로그래머스/Python]더 맵게

Enter·2021년 7월 16일
0

코딩테스트

목록 보기
10/68

💡생각

  1. heapq사용하기.
  2. scovile배열의 원소를 heapq에 담기.(오름차순으로 정렬됨.)
  3. heapq의 1번째원소와 2번째원소을 꺼냄. count + 1해줌.
  4. 1번째원소 + 2번째원소 *2 >= K 이며 3번째원소 >= K 면 count 값 리턴.
  5. 아니라면 1번째원소 + 2번째원소 *2 값을 다시 힙에 삽입.
  6. 리턴할 때까지 반복함.



💡테스트 통과한 코드

coville: Leo가 가진 음식의 스코빌 지수를 담은 배열
K: 원하는 스코빌 지수
OneTwo: 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
Three: 세 번째로 맵지 않은 음식의 스코빌 지수
answer: 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수
h: scoville을 heap을 이용해 오름차순으로 정렬한 배열


처음에 scoville를 heap에 삽입해서 오름차순으로 정렬했다.
그 다음 반복문을 이용해서 오름차순으로 정렬한 배열(h)의 길이가 2이하가 되기전까지 원하는 스코빌 지수가 나올때가 음식을 섞는다. 음식을 섞을 때마다 answer에 +1을 해준다.
만약 섞은 음식과 섞고나면 가장 스코빌지수가 작아지는 음식(세번째로 heap에서 꺼낸 음식)의 스코빌 지수가 둘 다K보다 크면 answer을 리턴해주고 아니면 다시 h에 삽입한다.
h의 길이가 2이하가 되면 그 두개의 음식을 섞어주고 answer에 +1을 해준다.
섞어준 음식의 스코빌지수가 K보다 크면 answer 리턴, 그렇지 않으면 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우이므로 -1을 리턴한다.




⏬다른사람의 코드

내 코드보다 While문 하나를 반복해서 if문들을 이용해 답을 내는게 효율성이 더 좋은 것 같음. 너무 복잡하게 생각하지 말아야 겠음.







🔗프로그래머스 - 더 맵게
https://programmers.co.kr/learn/courses/30/lessons/42626

profile
Cherish the moment :)

0개의 댓글