개인 공부/TIL
[ TIL - PGS ] 99클럽 코테 스터디 11일차 TIL + 오늘의 학습 가이드
킴도비
2024. 8. 1. 14:48
💡 오늘의 학습 키워드
- 정렬
✅ 오늘 공부한 내용
- 정렬
- Queue에 배열 넣기
- 오늘의 프로그래머스 문제! 카드 뭉치
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👀 오늘의 회고
🤣 오늘의 문제점
- Queue에서 값이 없을 때 조건에 넣지 않았던 점..
- poll()과 peek()을 쓰는 위치를 조심하지 않았던 점..
- 두 가지가 문제가 되었었다..! 조금 더 신중하게 생각했더라면 한 번에 풀 수 있었을 것 같다.
🔥 어떤 시도를 했는가?
- 일단 문제를 보자마자 든 생각은 큐에 넣어야 겠다!
- 하나씩 빼서 비교해야지~ 라고 생각했는데 비교한 이후에 하나씩 빼도 되는 문제였다..
- 일단 초반엔 조건문을 너무 지저분하게 작성하고, while로 했었는데 생각해보니 goal의 length만큼만 돌아도 되는 문제였다!
- 아래는 내가 푼 문제다.
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
// 코니 영어 단어가 적힌 카드 뭉치 두개
// 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있나 확인
// 카드 뭉치에서 카드를 순서대로 한 장씩 사용
// 한번 사용하면 사용 불가능
// 사용하지 않고 다음 카드로 넘어갈 수 없음
// 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없음
// 큐를 사용해 보자
Queue<String> qcard1 = new LinkedList<>();
Queue<String> qcard2 = new LinkedList<>();
for(int i = 0; i < cards1.length; i++){
qcard1.add(cards1[i]);
}
for(int j = 0; j < cards2.length; j++){
qcard2.add(cards2[j]);
}
String answer = "";
for(int i = 0; i < goal.length; i++){
if(!qcard1.isEmpty() && qcard1.peek().equals(goal[i])){
answer = "Yes";
qcard1.poll();
} else if(!qcard2.isEmpty() && qcard2.peek().equals(goal[i])){
answer = "Yes";
qcard2.poll();
} else {
return answer = "No";
}
}
return answer;
}
}
- ChatGPT한테 물어보니 더 짧은 코드를 제시해줬다. 이거 배웠던 내용인데.. 다음 번에는 꼭 이 방법을 쓰도록 신경써야겠다.
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
Queue<String> qcard1 = new LinkedList<>(Arrays.asList(cards1));
Queue<String> qcard2 = new LinkedList<>(Arrays.asList(cards2));
for (String target : goal) {
if (!qcard1.isEmpty() && qcard1.peek().equals(target)) {
qcard1.poll();
} else if (!qcard2.isEmpty() && qcard2.peek().equals(target)) {
qcard2.poll();
} else {
return "No";
}
}
return "Yes";
}
}
👏 무엇을 새로 알았는가?
- Queue에 Arrays.asList(배열)을 사용하여 값 넣기
- 조건문의 위치 잘 세우기
- return으로 조기종료 시키기
👩💻 내일은 무엇을 학습할 것인가?
- 항해 99 문제 풀기
- 원티드 미션 빠르게 개발하기
- 된다면 이력서 쓰기