Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JavaScript
- Vue
- 알고리즘
- Security
- jquery
- 시큐리티
- aws
- db
- Git
- 오라클
- 에러
- IntelliJ
- error
- 쿼리
- Java
- mybatis
- 스프링
- 방법
- kotlin
- 함수
- 프로그래머스
- GitHub
- 자바
- 넥사크로
- Eclipse
- 생성
- oracle
- 코틀린
- Spring
- JPA
Archives
- Today
- Total
송민준의 개발노트
[프로그래머스] 더 맵게 본문
https://programmers.co.kr/learn/courses/30/lessons/42626?language=java
힙을 활용한 문제 접근 필요
우선순위 큐 사용하였음.
public int solution(int[] scoville, int K) {
int returnValue = 0;
// 우선순위 큐 선언
Queue<Integer> queue = new PriorityQueue<>();
// int 형태를 Integer로 전환(람다를 만약 쓴다면...)
//List<Integer> convertArray = Arrays.stream(scoville).boxed().collect(Collectors.toList());
//queue.addAll(convertArray);
// int 형태를 Integer로 전환(람다 안쓰면 효율성 개선됨)
for(int i = 0; i < scoville.length; i++) {
queue.add(scoville[i]);
}
// 큐에 값이 있을 동안 값을 뽑아냄
while(!queue.isEmpty()) {
int firstValue = queue.poll();
if(firstValue < K) {
int secondValue = queue.poll();
int mixValue = firstValue + (secondValue * 2);
// 조합한 값이 K보다 작은데 다음값이 없을 경우 -1 반환
if(mixValue < K && queue.isEmpty()) {
queue.clear();
returnValue = -1;
} else { // 그게 아닐 경우 믹스값 더해줌
queue.add(mixValue);
returnValue++;
}
} else {
queue.clear();
}
}
return returnValue;
}
람다로 queue에 담을 경우
heap 참고링크
https://shanepark.tistory.com/261
https://st-lab.tistory.com/225
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 카카오프렌즈 컬러링북 (0) | 2022.04.30 |
---|---|
[프로그래머스] 오픈채팅방 (0) | 2022.04.28 |
[프로그래머스] 음양 더하기 (0) | 2022.04.24 |
[프로그래머스] 없는 숫자 더하기 (0) | 2022.04.18 |
[프로그래머스] 키패드 누르기 (0) | 2022.04.18 |