💡 오늘의 학습 키워드
- 힙
✅ 오늘 공부한 내용
- Deque
- 오늘의 프로그래머스 문제! 이중우선순위큐
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👀 오늘의 회고
🤣 오늘의 문제점
- 처음에는 우선순위 큐로 제거해야지~ 하고 생각을 했었다. 하지만 생각해보니 최댓값을 제거할 수 있는 구조가 아니었다..
- 두 번째는 데큐를 사용할까? 했었다. 그런데 찾아보니 정렬하기가 영 쉽지 않아 보였다...그래서 패스하고
- 마지막으로 시도했던 ArrayList로 성공했다 ✌ 😎
🔥 어떤 시도를 했는가?
- 일단 먼저 저장될 배열을 split으로 구분을 해주어야 했다.
- switch - case 형식을 쓸까 하다가 그냥 if문으로 구분해 주었다.
- 그런데 ArrayList이다 보니까 정렬이 필요해서 I로 숫자를 삽입할 때 Collections.sort()로 매번 정렬시켜줬다. 메모리 생각을 하면 많이 비효율적인 것 같다..
- 두 번째 D일때 제거를 했어야 하는데 여기서 조금 문제가 있었다. array가 없을 때도 제거를 하면 java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 0 에러가 생겼기에 !arr.isEmpty()문을 추가해 주었다.
- 그 뒤로 마지막에 isEmpty로 구분하여 answer에 값들을 넣어주었다.
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
// 이중 우선순위 큐
// I 숫자 : 큐에 숫자 삽입
// D 1 : 큐에서 최댓값 삭제
// D -1 : 큐에서 최솟값 삭제
// 모든 연산을 처리한 후 큐가 비어 있으면 [0, 0]
// 비어 있지 않으면 [최댓값, 최솟값]
ArrayList<Integer> arr = new ArrayList<>();
String a = "";
String num = "";
for(int i = 0; i < operations.length; i++){
String[] parts = operations[i].split(" ");
a = parts[0];
num = parts[1];
if("I".equals(a)){
arr.add(Integer.parseInt(num));
Collections.sort(arr);
} else if ("D".equals(a)){
if(!arr.isEmpty()){
if("1".equals(num)){
arr.remove(arr.size() -1);
} else if("-1".equals(num)){
arr.remove(0);
}
}
}
}
int[] answer = new int[2];
if(arr.isEmpty()){
answer[0] = 0;
answer[1] = 0;
} else {
answer[0] = arr.get(arr.size() - 1);
answer[1] = arr.get(0);
}
return answer;
}
}
👏 무엇을 새로 알았는가?
- Deque가 무엇인지 공부할 수 있었다!
- Deque는 신기하게 앞과 뒤의 값을 제거하고 삽입할 수 있는 구조였다. 한번 코테 풀 때 요긴하게 써보고 싶어졌다✨
- 새로운 에러를 발견했다. 하지만 이건 내가 구조상 잘못짜서 발생했던 구조이기에 다음 번에는 같은 실수를 하지 않게 외워야겠다!
- 아 그런데 ChatGPT가 우선순위 큐를 사용하라고 추천해주었다. 다음에 재시도할 때 한번 도전해 보고 싶다.
👩💻 내일은 무엇을 학습할 것인가?
- 항해99 문제 풀기
- 공고 적기
- 책 읽기
- 원티드꺼 하기..
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - PGS ] 99클럽 코테 스터디 12일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.02 |
---|---|
[ TIL - PGS ] 99클럽 코테 스터디 11일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.01 |
[ TIL - PGS ] 99클럽 코테 스터디 9일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.30 |
[ TIL - PGS ] 99클럽 코테 스터디 8일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.29 |
[ TIL - PGS ] 99클럽 코테 스터디 7일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.28 |