코딩 테스트

프로그래머스) 카드 뭉치 Lv1

우루쾅 2024. 2. 4. 01:09
728x90
반응형
SMALL

카드의 순서를 맞추는 문제

문제를 보자마자 방법을 깨달아서 타닥타닥 문제를 바로 풀었다.

class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        String answer = "Yes";
        int a = 0;
        int b = 0;
        
        for(int i=0; i<goal.length; i++){
            if(cards1[a].equals(goal[i])){
                a++;
            }else if(cards2[b].equals(goal[i])){
                b++;
            }else{
               answer = "No";
            }
        }
        
        return answer;
    }
}

 

당당하게 코딩을 하고 딱 돌렸는데

java.lang.ArrayIndexOutOfBoundsException

 

에러 발생...

 

무슨 에러인가 확인해보니 배열의 범위를 벗어나려고 할 때 발생하는 에러이다

여기에서 변수 a, b는 각각 card1과 card2의 인덱스를 나타내므로, 각 배열의 크기를 초과하지 않도록 검사하는 코드를 추가해주었다!

 

clear~

 

 

 

정답

class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        String answer = "Yes";
        int a = 0;
        int b = 0;
        
        for(int i=0; i<goal.length; i++){
            if(a < cards1.length && cards1[a].equals(goal[i])){
                a++;
            }else if(b < cards2.length && cards2[b].equals(goal[i])){
                b++;
            }else{
               answer = "No";
            }
        }
        
        return answer;
    }
}

 

 

 

출처

연습문제 > 카드 뭉치

https://school.programmers.co.kr/learn/courses/30/lessons/159994?language=java

728x90
반응형
LIST