문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
풀이(큐)
현재 이 문제에서 큐를 이용한 풀이를 이용했다.
1. 큐를 2개 선언해서, cards1, cards2에 대한 문자열들을 담는다.
2. goals에 있는 문자열을 하나 꺼내서, 각 큐에 있는 peek 연산을 통해 문자열이 일치한지 확인한다.
3. 일치하지 않으면 isPossible에 false를 넣고 for문을 빠져나간다.
4. isPossible에 해당하는 문자열을 반환한다.
소스코드(큐)
import java.util.ArrayDeque;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
ArrayDeque<String> cardQueue1 = new ArrayDeque<>();
ArrayDeque<String> cardQueue2 = new ArrayDeque<>();
for (String card : cards1) {
cardQueue1.addLast(card);
}
for (String card : cards2) {
cardQueue2.addLast(card);
}
boolean isPossible = true;
for (int i = 0; i < goal.length; i++) {
String s = goal[i];
if (s.equals(cardQueue1.peekFirst())) {
cardQueue1.removeFirst();
} else if (s.equals(cardQueue2.peekFirst())) {
cardQueue2.removeFirst();
} else {
isPossible = false;
break;
}
}
return isPossible ? "Yes" : "No";
}
}
풀이(인덱스)
1. 현재 사용할 카드에 대한 인덱스 변수를 생성한다.
2. goal에 있는 문자열을 for문으로 순회하면서 cards1, cards2 배열에서 인덱스에 해당하는 문자열들에 대해 사용할 수 있는지 확인한다.
3. 확인을 못하면 isPossible에 false를 넣고 for문을 빠져나간다.
4. isPossible에 해당하는 문자열을 반환한다.
소스코드(인덱스)
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
int card1Idx = 0;
int card2Idx = 0;
boolean isPossible = true;
for (int i = 0; i < goal.length; i++) {
String s = goal[i];
if (card1Idx < cards1.length && s.equals(cards1[card1Idx])) {
card1Idx += 1;
} else if (card2Idx < cards2.length && s.equals(cards2[card2Idx])) {
card2Idx += 1;
} else {
isPossible = false;
break;
}
}
return isPossible ? "Yes" : "No";
}
}'Problem Solving > Programmers' 카테고리의 다른 글
| [Programmers] 대충 만든 자판 - Java (0) | 2025.06.23 |
|---|---|
| [Programmers] 바탕화면 정리 - Java (0) | 2025.06.21 |
| [Programmers] 가장 가까운 같은 글자 - Java (0) | 2025.06.19 |
| [Programmers] 덧칠하기 - Java (0) | 2025.06.18 |
| [Programmers] 완전범죄 - Java (0) | 2025.06.17 |