문제
회원들의 정보가 담긴 데이터베이스 db가 주어지고 유저(id_pw) 가 로그인 하려고 한다
아이디와 패스워드가 모두 일치하면 "login"
아이디는 일치하지만 패스워드가 일치하지 않으면 "wrong pw"
둘 다 없다면 "fail"
나의 코드 리뷰
function solution(id_pw, db) {
for(let i = 0; i< db.length; i++) {
if(db[i][0] === id_pw[0] && db[i][1] === id_pw[1]) {
return "login"
}else if (db[i][0] === id_pw[0]) {
return "wrong pw"
}
}
return "fail";
}
1-1 for
- 데이터 베이스를 순회하기 위래 for 루프를 사용하여 회원 정보를 하나씩 확인한다
1-2 조건문
- db[i][0] : 아이디와 확인 db[i][1] 비밀번호와 일치하는지 확인후 이에따른 텍스트 반환
다른 코드 풀이 1
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';
}
- id_pw 배열에서 아이디와 비번을 추출하여 id와 pw 변수에 저장
- db 배열을 Map 객체인 Map으로 변환한다
- map.has를 사용하여 id가 map내에 존재하는지 확인 > 만약 존재하면 map.get(id)를 사용하여 해당 아이디에 저장된 비밀번호를 가져온다 가져온 비밀번호 pw와 입력한 비밀번호가 일치하면 "login" 반환
2-1 map has? get?
const myMap = new Map();
myMap.set('name', 'John');
console.log(myMap.has('name')); // true
console.log(myMap.has('age')); // false
- has(key) : key가 존재한다면 true, 없으면 false
- get (key) : key가 map 객체안에 존재하지 않으면 undefined 반환
const myMap = new Map();
myMap.set('name', 'John');
const name = myMap.get('name');
console.log(name); // 'John'
const age = myMap.get('age');
console.log(age); // undefined
다른 코드 풀이 2
function solution(id_pw, db) {
const [ userId, userPw ] = id_pw;
for (const [ dbId, dbPw ] of db) {
if (userId === dbId && userPw === dbPw) return "login";
else if (userId === dbId && userPw !== dbPw) return "wrong pw";
}
return "fail";
}
- userId, userPw 변수에 할당
- db배열 각 요소를 dbId와 dbPw 변수에 분해할당한다
- db 2차원 배열을 for...of 루프를 사용하여 순회
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javascript a,b 사이의 모든 정수의 합 (0) | 2023.10.05 |
---|---|
Palindrome Number (0) | 2023.10.04 |
javascript 배열 중복 제거후 변수 k의 길이만큼 자르거나 채우는 방법 (0) | 2023.09.11 |
javascript 영문으로 표기된 숫자 문자열을 숫자의 수로 변경하기 (0) | 2023.08.26 |
[javascript] for..of / for문 / indexOf를사용한 알파벳 등장 횟수 계산 (0) | 2023.08.25 |