728x90
반응형
🔶 우선 순위 큐
≣ 목차
/ 오늘의 TIL /
- 메모
- 범위가 벗어나서 인덱스 접근이 어렵다면 새로운 +n 배열을 만들어서 접근해볼 것
https://school.programmers.co.kr/learn/courses/30/lessons/42587
- 우선 순위 큐에서 Collections.reverseOrder() 를 통해 내림차순으로 정렬할 수 있다.
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
//우선 순위 큐
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
//초기 값
for (int p : priorities) {
queue.add(p);
}
//큐가 빌 때까지 진행
int answer = 0;
while (!queue.isEmpty()) {
for (int i = 0; i < priorities.length; i++) {
//동일한 값인 경우만 제거 가능
if (queue.peek() == priorities[i]) {
queue.poll();
answer++; //실행 횟수 추가
//target 번호와 동일할 경우 종료
if (location == i) return answer;
}
}
}
return answer;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/17682
- 결론이 모든 수의 합이라면, 하나씩 접근해서 하나하나 확인하려고 하지 말자...
- 나무보다 숲을 볼 것!!
import java.util.*;
import java.util.stream.*;
class Solution {
public int solution(String dartResult) {
int result = 0; //총 점수
int lastScore = 0; //직전 점수
int curScore = 0; //현재 점수
for (int i = 0; i < dartResult.length(); i++) {
char c = dartResult.charAt(i);
//10점인 경우
if (c == '1' && dartResult.charAt(i+1) == '0') {
result += lastScore; //결과 값에 추가
lastScore = curScore; //직전 점수 수정
curScore = 10; //현재 점수는 10점
i++; //0 건너뛰기
continue;
}
//한 자리 숫자인 경우
if ('0' <= c && c <= '9') {
result += lastScore; //결과 값에 추가
lastScore = curScore; //직전 점수 수정
curScore = c - '0'; //현재 점수 수정
}
//'S', 'D', 'T' 보너스인 경우
else if ('A' <= c && c <= 'Z') {
if (c == 'D') curScore = (int) Math.pow(curScore, 2);
else if (c == 'T') curScore = (int) Math.pow(curScore, 3);
}
//'#', '*' 옵션인 경우
else if (c == '#') curScore *= (-1);
else if (c == '*') {
lastScore *= 2;
curScore *= 2;
}
}
//마지막 모든 수 더하기
result += (lastScore + curScore);
return result;
}
}
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
2025-01-06 (월) (0) | 2025.01.06 |
---|---|
[240907] 이진법 (0) | 2024.09.07 |
[240905] 코딩 테스트 풀이 (0) | 2024.09.05 |
[240626] JS 문법 (0) | 2024.06.26 |
[240621] 동시성 테스트, BT (0) | 2024.06.21 |
댓글