머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw
와 회원들의 정보가 담긴 2차원 배열 db
가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
id_pw
의 길이는 2입니다.id_pw
와 db
의 원소는 [아이디, 패스워드] 형태입니다.db
의 길이 ≤ 10db
의 원소의 길이는 2입니다.equals로 일치하는지를 비교하고 일치한다면 "login"을 아이디부터가 틀렸다면 "fail", 패스워드만 틀렸다면 "wrong pw"을 반환하면 된다.
class Solution {
public String solution(String[] id_pw, String[][] db) {
String answer="";
String id = id_pw[0]; // 아이디
String password = id_pw[1]; // 패스워드
for(int i = 0; i <= db.length; i++) {
if(i == db.length) { // db에 아이디가 없으면
return "fail";
}
else if(id.equals(db[i][0])) { // 아이디가 같다면
if(password.equals(db[i][1])) { // 패스워드도 같은 경우에
return "login"; // 로그인 성공
} else { // 패스워드가 같지 않은 경우에는
return "wrong pw";
}
} else if(!id.equals(db[i][0])) {
continue;
}
}
return answer;
}
}
반복문과 if문이 많아 코드를 알아보기 힘들다.
class Solution {
public String solution(String[] id_pw, String[][] db) {
String answer="";
String id = id_pw[0]; // 아이디
String password = id_pw[1]; // 패스워드
for(int i = 0; i < db.length; i++) {
if(id.equals(db[i][0])) { // 아이디가 같다면
if(password.equals(db[i][1])) { // 패스워드도 같은 경우에
return "login"; // 로그인 성공
} else { // 패스워드가 같지 않은 경우에는
return "wrong pw";
}
}
}
return "fail";
}
}
아이디가 같으면 경우를 나눠서 "login", "wrong pw" 를 반환하고,
아이디가 틀린 경우는, 계속 반복문을 돌면서 비교하므로 일치하는 것이 없다면 반복문을 나오게 된다. 반복문 밖에서 "fail" 을 반환하게끔 수정했다.