카드 뭉치

Heeeoh·2023년 3월 21일
0

프로그래머스

목록 보기
14/26
post-thumbnail

🔍문제 분석

✔️ 출처

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된다는 소리다.
이런점을 이용할 필요가 있다.

❗ 오답노트 / 필요한 지식

  1. ArrayIndexOutOfBoundsException을 피할 방법을 미리 구상하자.
profile
열심히 살자

0개의 댓글