[Java] 로그인 성공?

peace w·2023년 12월 1일
0

문제

머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.

아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.

  • 제한사항
    • 회원들의 아이디는 문자열입니다.
    • 회원들의 아이디는 알파벳 소문자와 숫자로만 이루어져 있습니다.
    • 회원들의 패스워드는 숫자로 구성된 문자열입니다.
    • 회원들의 비밀번호는 같을 수 있지만 아이디는 같을 수 없습니다.
    • id_pw의 길이는 2입니다.
    • id_pwdb의 원소는 [아이디, 패스워드] 형태입니다.
    • 1 ≤ 아이디의 길이 ≤ 15
    • 1 ≤ 비밀번호의 길이 ≤ 6
    • 1 ≤ db의 길이 ≤ 10
    • db의 원소의 길이는 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" 을 반환하게끔 수정했다.

profile
더 성장하자.

0개의 댓글