울음참고 개발공부
article thumbnail
728x90

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120883

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

테스트 입출력 1예시

 

 


 

[ 정답 ] 

 

class Solution {
    public String solution(String[] id_pw, String[][] db) {
        
        for(int i=0; i<db.length; i++){
            String id = db[i][0];
            String pw = db[i][1];
            
            if(id_pw[0].equals(id) && id_pw[1].equals(pw)){
                return "login";
            }else if(id_pw[0].equals(id) && !id_pw[1].equals(pw)){
                return "wrong pw";
            }else{
                continue;
            }  
        }
        return "fail";
    }
}

 

 

 

 


 

[ 처음 오답& 이유 ]

 

 

class Solution {
    public String solution(String[] id_pw, String[][] db) {
        String answer = "";
        
        for(int i=0; i<db.length; i++){
            String id = db[i][0];
            String pw = db[i][1];
            
            if(id_pw[0].equals(id)){
                if(id_pw[1].equals(pw)){
                    answer = "login";
                }else {
                    answer = "wrong pw";
                }
            }else {
                answer = "fail";
            }  
        }
        return answer;
    }
}

 

이렇게 하면 3개의 테스트 코드는 성공하지만, 실제 채점시에는 1개의 테스트 코드를 통과하지 못했다. 

 

채점 결과

 

 


 

 

 

 

오답 코드 : 모든 경우를 검사 후에 answer 결정

 

입출력 예를 살펴보자

 

테스트 코드를 돌 때는 마지막 값이 정답이 된다.

( for 문에서 i = 2 일때 의 값이 result 값이 됨 ) 

 

 

그러나 이런 경우를 생각해보자

 

테스트 4 에서는 i=0 일때 login 이 가능하므로 결과 값이되어야하지만 반복문이 끝까지 돌기 때문에 결국

["dfdfdf","2323"] 값과 비교하게 되어 "fail" 이 반환되는 것이다. 

 

이것이 오답 코드의 잘못된 이유이다.

 

 

 

 

정답 코드 : 최초 매칭결과 반환 

 

 

정답 코드를 살펴보면 , 

첫번째 조건 : 아이디,비밀번호가 모두 같은 경우 -> "login" 반환

두번째 조건 : 아이디는 같지만 비밀번호가 다른 경우 -> "wrong pw" 반환

모두 해당하지 않는 경우 : 'continue' 로 반복문이 끝날 때까지 진행

 

-> 결국 모두 해당하지않는 경우에는 for 문을 빠져나와 "fail" 를 반환 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!