머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
단순 반복문을 돌리면 login이나 wrong pw가 나왔을 때 break하지 않고, 반복문을 계속 돌려서 제일 마지막 요소의 결과값을 반환하기 때문에 틀리게 된다.
ex) 첫 번째 : fail, 두 번째 : wrong pw, 세 번째 : fail
위와 같은 경우 wrong pw 를 반환해야 하지만 마지막 요소의 결과값인 fail을 반환한다.
function solution(id_pw, db) {
let answer = "";
db.forEach((([id,pw]) => {
if(id_pw[0] === id && id_pw[1] === pw){
answer = "login";
}else if(id_pw[0] === id && id_pw[1] !== pw){
answer = "wrong pw";
}else{
answer = "fail";
}
}))
return answer;
}
따라서 아래와 같이 1차로 아이디 일치여부를 확인하고, 아이디가 일치하는 경우에만 2차로 비밀번호 일치여부를 확인하여 결과값을 변수에 저장한다.
그리고 결과값이 이미 있을 경우(login 이나 wrong pw가 나온 경우)에는 그 값을 반환하고, 결과값이 없을 경우(아이디가 일치하는 것이 하나도 없는 경우)에만 fail을 반환하게 한다.
이를 통해 login이나 wrong pw이 fail에 덮이지 않고 제대로 판별될 수 있도록 할 수 있다.
function solution(id_pw, db) {
let answer = "";
db.forEach((([id,pw]) => {
if(id_pw[0] === id){
if(id_pw[1] === pw){
answer = "login";
}else{
answer = "wrong pw";
}
}
}))
return answer ? answer : "fail";
}