[프로그래머스] 로그인 성공?

·2022년 12월 27일
0

프로그래머스

목록 보기
2/59

📌 문제 설명

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

📌 제한 사항

  • 회원들의 아이디는 문자열입니다.
  • 회원들의 아이디는 알파벳 소문자와 숫자로만 이루어져 있습니다.
  • 회원들의 패스워드는 숫자로 구성된 문자열입니다.
  • 회원들의 비밀번호는 같을 수 있지만 아이디는 같을 수 없습니다.
  • id_pw의 길이는 2입니다.
  • id_pwdb의 원소는 [아이디, 패스워드] 형태입니다.
  • 1 ≤ 아이디의 길이 ≤ 15
  • 1 ≤ 비밀번호의 길이 ≤ 6
  • 1 ≤ db의 길이 ≤ 10
  • db의 원소의 길이는 2입니다.

📌 입출력 예

id_pwdbresult
["meosseugi", "1234"][["rardss", "123"], ["yyoom", "1234"], ["meosseugi", "1234"]]"login"
["programmer01", "15789"]["programmer02", "111111"], ["programmer00", "134"], ["programmer01", "1145"]]"wrong pw"
["rabbit04", "98761"][["jaja11", "98761"], ["krong0313", "29440"], ["rabbit00", "111333"]]"fail"

📌 코드

import java.util.HashMap;

class Solution {
    public String solution(String[] id_pw, String[][] db) {
       HashMap <String, String> h = new HashMap<>();
        for(int i = 0; i < db.length; i++)
        {
            h.put(db[i][0], db[i][1]);
        }
        if(h.containsKey(id_pw[0]))
        {
            if(h.get(id_pw[0]).equals(id_pw[1]))
                return "login";
            else return "wrong pw";
        }
        else
             return "fail";
    }
}

📌 문제 해결 과정

💡 HashMap을 이용해 key를 아이디로 두고, value를 패스워드로 두었으며 db 배열에 저장된 아이디와 패스워드를 HashMap에 저장한 후, HashMap에 찾고자 하는 아이디인 id_pw[0]이 있는지 확인하고, 없으면 "fail"을 retrun 하게 함

💡 만약에 HashMap에 id_pw[0]와 일치하는 아이디가 저장되어 있다면, 그때 key(아이디)의 value와 일치하는 패스워드가 있다면 "login"을 return 하게 하고, 아이디는 일치하지만 패스워드는 없다면 "wrong pw"을 return 할 수 있게 해 줌

💡 처음엔 단순 if문 조합으로 코드를 짰었는데 이상하게 테스트 케이스 1에서만 자꾸 오류가 나서 HashMap으로 다시 짜게 되었다 정확하지는 않지만 if문으로만 코드를 짤 때는 그냥 db에 있는 아이디와 id_pw[0]이 일치한지 확인한 후, 그 if문 안에서 db에 있는 패스워드와 id_pw[1]을 비교해 일치하는지 확인했었는데 예외가 있었던 것 같다 HashMap으로 바꾸면서 get()을 사용하면서 key에 해당하는 value와 일치할 때만 "login"을 return 해 주면서 모든 케이스를 통과할 수 있었던 것 같다

profile
공부는 많은 양을 하진 않더라도 꾸준히 매일 하기

0개의 댓글