머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
class Solution {
public String solution(String[] id_pw, String[][] db) {
String answer = "fail";
for(int i=0; i<db.length; i++){
if (id_pw[0].equals(db[i][0])) { // id 비교
if (id_pw[1].equals(db[i][1])) { //id가 존재할 경우 pw확인
answer = "login";
break;
}
answer = "wrong pw";
}
}
return answer;
}
}
-> 스트림 버전
import java.util.Arrays;
class Solution {
public String solution(String[] id_pw, String[][] db) {
String answer = "fail";
boolean id = Arrays.stream(db).anyMatch(row -> row[0].equals(id_pw[0]));
if(id){ //id가 일치하는 경우 비밀번호가 일치하는지 확인
boolean pw = Arrays.stream(db)
.filter(row -> row[0].equals(id_pw[0])) //id가 db와 일치하는 행만 선택
.anyMatch(row -> row[1].equals(id_pw[1])); //일치하는 행에서 비밀번호 일치 확인
if(pw){ //비밀번호도 일치
answer = "login";
} else { //id는 있지만 비밀번호 불일치
answer = "wrong pw";
}
}
return answer;
}
}
-> 1번, 5번 테스트 케이스 실패
import java.util.Arrays;
class Solution {
public String solution(String[] id_pw, String[][] db) {
String answer = "";
boolean id = Arrays.stream(db).anyMatch(row -> row[0].equals(id_pw[0]));
if(id){
boolean pw = Arrays.stream(db).anyMatch(row -> row[1].equals(id_pw[1]));
if(pw){
return answer = "login";
} else {
return answer = "wrong pw";
}
} else {
return answer = "fail";
}
}
}