- 내 방법 풀이
- 문제를 보고 처음에 리스트로 만들어서 풀 생각을 했다.
반복문을 사용하여, cards1,2를 번갈아가며 리스트 하나에 포함시켜 goal과 비교하려 했다.
하지만 카드 뭉치 2에서 연속하여 단어 2개를 사용할 수 있어 맞지 않는 코드였다. - 이후 cards1, 2를 각각 리스트로 만들어 goalList와 비교하며 0인덱스항을 삭제시켜 비교하는 방법으로 변경했다.
list의 사이즈가 남아 있을 때를 고려해주지 않아서 조건문에 list사이즈를 추가해서 정답에 도달했다.
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
ArrayList<String> goalList = new ArrayList<>(Arrays.asList(goal));
ArrayList<String> cards1List = new ArrayList<>(Arrays.asList(cards1));
ArrayList<String> cards2List = new ArrayList<>(Arrays.asList(cards2));
while (goalList.size()>0) {
if (cards1List.size() > 0 && goalList.get(0).equals(cards1List.get(0))) {
goalList.remove(0);
cards1List.remove(0);
}
else if (cards2List.size() > 0 && goalList.get(0).equals(cards2List.get(0))) {
goalList.remove(0);
cards2List.remove(0);
}
else return "No";
}
return "Yes";
}
}
- 다른 사람 방법 풀이
- cards1,2의 인덱스를 따로 설정하여 리스트로 만들지 않고 goal과 비교한 정답이 있었다.
- 리스트를 사용하여 푼 풀이 중에서 눈에 띈 간단한 코드
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
List<String> card1Ary = new ArrayList<>(Arrays.asList(cards1));
List<String> card2Ary = new ArrayList<>(Arrays.asList(cards2));
String answer = "Yes";
for(String str:goal) {
if(!card1Ary.isEmpty() && card1Ary.get(0).equals(str)) {
card1Ary.remove(0);
} else if(!card2Ary.isEmpty() && card2Ary.get(0).equals(str)) {
card2Ary.remove(0);
} else {
answer = "No";
break;
}
}
return answer;
}
}
'개발지 > 코테' 카테고리의 다른 글
[프로그래머스] 코테연습 - 점프와 순간 이동(lv.2) (1) | 2023.11.18 |
---|---|
[프로그래머스] 코테연습 - 폰켓몬(lv.1) (0) | 2023.11.09 |
[프로그래머스] 코테연습 - 문자열 내 맘대로 정렬하기(lv.1) (0) | 2023.11.07 |
[프로그래머스] 코테연습 - 다트 게임(lv.1) (0) | 2023.10.27 |
[프로그래머스] 코테연습 - 뒤에 있는 큰 수 찾기(lv.1) (0) | 2023.10.26 |