- [JS] 로그인 성공? - 프로그래머스 120883 Map의 has get 메서드, some, 구조분해할당2024년 07월 12일
- 주사위 clice
- 작성자
- 2024.07.12.:00
반응형문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/120883
문제 설명
머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
- 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
- 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
제한사항
- 회원들의 아이디는 문자열입니다.
- 회원들의 아이디는 알파벳 소문자와 숫자로만 이루어져 있습니다.
- 회원들의 패스워드는 숫자로 구성된 문자열입니다.
- 회원들의 비밀번호는 같을 수 있지만 아이디는 같을 수 없습니다.
- id_pw의 길이는 2입니다.
- id_pw와 db의 원소는 [아이디, 패스워드] 형태입니다.
- 1 ≤ 아이디의 길이 ≤ 15
- 1 ≤ 비밀번호의 길이 ≤ 6
- 1 ≤ db의 길이 ≤ 10
- db의 원소의 길이는 2입니다.
입출력 예
id_pw db result ["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" 입출력 예 설명
입출력 예 #1
- db에 같은 정보의 계정이 있으므로 "login"을 return합니다.
입출력 예 #2
- db에 아이디는 같지만 패스워드가 다른 계정이 있으므로 "wrong pw"를 return합니다.
입출력 예 #3
- db에 아이디가 맞는 계정이 없으므로 "fail"을 return합니다.
내가 작성한 코드
const solution = (id_pw, db) => { let id=id_pw[0]; let pw=id_pw[1]; for(i of db) if(i[0]===id) return (i[1]===pw)?("login"):("wrong pw"); return "fail" }
최대 유저 풀이 코드
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 객체, get, has 메서드를 사용하였다
Map 객체
Map 객체는 키-값 쌍을 저장하는 구조이다
Map은 객체와 달리 키의 순서를 기억하고, 반복 가능하며, 삽입된 순서대로 요소를 순회할 수 있다
has 메서드
map.has(key) 메서드는 Map 객체에 특정 키가 존재하는지 여부를 확인하는 메서드이다.
값이 존재하면 true, 존재하지 않으면 false를 반환한다
get 메서드
map.get(key) 메서드는 Map 객체에서 특정 키에 해당하는 값을 반환한다.
키가 존재하지 않으면 undefined를 반환한다
가장 독특한 풀이
var solution=([a,b],d)=>d.some(([p,q])=>a==p&&b==q)?'login':d.some(([p])=>a==p)?'wrong pw':'fail'
어떤 문제든 항상 한 줄 코드로 제출하는 김기준 님의 코드이다
구조분해 할당, some, 콜백함수, 삼항연산자를 사용하셨다
가장 눈의 띄었던 부분이 some을 이용한 것 이었다
some
som 메서드 사용법
arr.some(callback(element, index, array), thisArg)
some 메서드는 콜백 함수를 인수로 받으며, 이 콜백 함수는 배열의 각 요소에 대해 실행된다
some 메서드는 콜백 함수가 true를 반환하는 첫 번째 요소를 찾으면 즉시 true를 반환하고, 그렇지 않으면 false를 반환한다
배열을 순회할 때 사용하기 좋다
ⓒ clice lee clicelee
클라이스의 개발일지주사위의 개발일지
반응형'프론트 > Javascript Typescript' 카테고리의 다른 글
[JS] 자바스크립트 자동 형변환을 이용해서 쉽게 숫자를 문자열로 바꾸기+프로그래머스 12933 (2) 2024.08.02 [JS] 자바스크립트 약수 구하기 (Math.sqrt로 시간 복잡도 줄이기) (0) 2024.08.02 [JS] 절대 사용하면 안되는 eval 함수에 대해 (프로그래머스 120902 문자열 계산하기) (2) 2024.07.08 [자바스크립트] 캐릭터의 좌표 - 프로그래머스 120861 객체의 속성값 전달하여 변경하기 (0) 2024.06.19 [JS] 영어가 싫어요-프로그래머스 120894 (1) 2024.06.15 다음글이전글이전 글이 없습니다.댓글