728x90
https://school.programmers.co.kr/learn/courses/30/lessons/120883
[ 정답 ]
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
'코테연습 > 프로그래머스' 카테고리의 다른 글
코딩 기초 트레이닝 > 접미사인지 확인하기 Java #contains #Arrays.asList() (0) | 2023.08.30 |
---|---|
코딩 기초 트레이닝 > 접미사 배열 Java (0) | 2023.08.30 |
코딩 기초 트레이닝 > 부문 문자열 이어 붙여 문자열 만들기 Java (0) | 2023.08.28 |
코딩 기초 트레이닝 > 문자열의 뒤의 n글자 - Java #substring() (0) | 2023.08.28 |
코딩테스트입문 > 배열의 평균값 Java (0) | 2023.08.23 |