
🔍문제 분석
✔️ 출처
https://school.programmers.co.kr/learn/courses/30/lessons/159994
📖 문제

cards1 과 cards2의 인덱스를 따로 선언하고 반복문을 돌려 조건에 따라 equals로 비교한다.
🔅 처음 시도
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "Yes";
int first = 0;
int second = 0;
for(int i = 0; i < goal.length; i++) {
//인덱스가 넘어가면 더이상 참조하지 못하게 막아야함
if(first < cards1.length){
if(goal[i].equals(cards1[first])){
first++;
}else if(second < cards2.length){
if(goal[i].equals(cards2[second])){
second++;
}
}else{
answer = "No";
break;
}
}
}
return answer;
}
}
테스트 케이스 4개가 통과하지 못했다. 이유를 생각해보니
1. cards2가 더 클때의 경우를 체크하지 않은것
2. 조건에서 goal의 길이 >= cards1 + cards2
🔅 문제 풀이
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "Yes";
int first = 0;
int second = 0;
for(int i = 0; i < goal.length; i++) {
if(goal[i].equals(cards1[first])){
if(first < cards1.length -1 ){
first++;
}
}else if(goal[i].equals(cards2[second])) {
if(second < cards2.length -1) {
second++;
}
}else{
answer = "No";
break;
}
}
return answer;
}
}

새롭게 배운 것
if( first < cards1.length && goal[i].equals(cards1[first])){
first++;
}else if(second < cards2.length && goal[i].equals(cards2[second])) {
second++;
}
if문에서 & or |을 사용시 조건문을 읽는 순서는 왼쪽에서 오른쪽이다.
first < cards1.length를 먼저 읽고 안맞으면 false된다는 소리다.
이런점을 이용할 필요가 있다.
❗ 오답노트 / 필요한 지식
- ArrayIndexOutOfBoundsException을 피할 방법을 미리 구상하자.
'programmers > Lv 1' 카테고리의 다른 글
프로그래머스Lv. 1 로또의 최고 순위와 최저 순위 (0) | 2024.06.27 |
---|---|
프로그래머스Lv 1 옹알이 (2) (0) | 2024.06.27 |
프로그래머스Lv 1 완주하지 못한 선수 (0) | 2024.06.26 |
프로그래머스Lv 1 기사단원의 무기 (0) | 2024.06.26 |
프로그래머스Lv 1 숫자 짝꿍 (0) | 2024.06.26 |