프로그래머스 (JS)/Lv. 0
[Programmers] 120883번 - 로그인 성공?
hodo-
2023. 3. 7. 22:32
Problem
머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
- 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
- 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
Solution
function solution(id_pw, db) {
let idpw = []
for(let i = 0; i < db.length; i++){
if(id_pw[0] !== db[i][0]) {idpw.push("fail")}
else if(id_pw[1] !== db[i][1]){idpw.push("wrong pw")}
else idpw.push("login")
}
return idpw.includes("login") ? "login" : idpw.includes("wrong pw") ? "wrong pw" : "fail"
}
입력 - id_pw (아이디, 패스워드) , db (회원정보)
배열, 2차원 배열로 들어옴
return -
1. 아이디O, 비번 O = "login"
2. 아이디 O, 비번 x = "wrong pw"
3. 아이디x, 비번 x = "fail"
풀이-
3가지의 결과값을 for문 돌려서 배열에 넣어준다
return 우선순위를 login > wrong pw > fail 순으로 해서 삼항연산와 includes()이용해서 풀었다.
function solution(id_pw, db) {
const [id, pw] = id_pw;
const map = new Map(db);
return map.has(id) ? (map.get(id) === pw ? 'login' : 'wrong pw') : 'fail';
}
map메서드는 항상 x.map(x => x*2) 이런 형태로만 써봤는데 위의 코드를 보고 Map에 대해 새롭게 알게 되었다.
map에 어떻게 저장되어있을지 궁금해서 콘솔창에 쳐보니
이렇게 저장되어있다. 그래서 map.get(id)하면 pw가 나오므로 id_pw의 pw와 비교할 수 있음을 알게 되었다!
Map메서드는 2차원배열때 유용하게 쓸 수 있을 거 같다.