[문제 설명]
머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
- 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
- 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/120883
🎨 풀이
💡 전체 코드
def solution(id_pw, db):
answer = ''
dic = {}
for i in range(len(db)):
dic[db[i][0]] = db[i][1]
# 입력된 아이디가 dic 안에 키 값으로 있는 경우
if id_pw[0] in dic :
# 입력된 비밀번호가 해당 아이디의 비밀번호가 일치할 경우
if id_pw[1] == dic[id_pw[0]]:
answer = "login"
else :
answer = "wrong pw"
else :
answer = "fail"
return answer
> 핵심 : dic 이용하기~
🍦 코드 설명 (실행 순서대로 나열)
#solution
dic = {}
for i in range(len(db)):
dic[db[i][0]] = db[i][1]
1. 딕셔너리 dic을 만든다.
2. db에 있는 값을 이용해 dic에 키와 값을 넣어준다.
- (ex) db = [["jaja11", "98761"], ["krong0313", "29440"], ["rabbit00", "111333"]]
=> dic = { 'jaja11' : '98761' , 'krong0313' : '29440' , 'rabbit00' : '111333'}
# 입력된 아이디가 dic 안에 키 값으로 있는 경우
if id_pw[0] in dic :
# 입력된 비밀번호가 해당 아이디의 비밀번호가 일치할 경우
if id_pw[1] == dic[id_pw[0]]:
answer = "login"
else :
answer = "wrong pw"
else :
answer = "fail"
return answer
3. 만약 id_pw[0]이 dic에 키 값으로 존재하고, id_pw[1]이 그 키의 값과 같다면 answer에 login을 넣는다.
- (ex) id_pw[0] = "jaja11" , dic = { 'jaja11' : '98761' , ... }
=> dic[id_pw[0]] == dic['jaja11'] => '98761'
4. id_pw[0]이 딕셔너리에 존재하지만, id_pw[1]이 그 키 값과 일치하지 않는다면 answer에 wrong pw 를 넣는다.
5. id_pw[0]가 딕셔너리에 존재하지 않는다면, answer에 fail을 넣는다.
6. answer을 return한다.
끝~
⭐ 느낀점
> db에 최대 10개가 들어가고, 머쓱이는 한명이라 입력값이 아이디 비밀번호 하나씩밖에 없어서 for문 돌리면서 천천히 봐도 됐을 거 같긴하다. 근데 그냥 딕셔너리 한 번 사용해보고 싶었다. ㅋㅋㅋㅋㅋ 잘 풀었담~ 고생했다!
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 입문] A로 B 만들기 (파이썬) (0) | 2022.10.06 |
---|---|
[프로그래머스 / 입문] 배열의 유사도 (파이썬) (0) | 2022.10.04 |
[프로그래머스 / 입문] 세균 증식 (파이썬) (0) | 2022.10.01 |
[프로그래머스 / 입문] 모스부호 (1) (파이썬) (2) | 2022.09.30 |
[프로그래머스 / 입문] 배열 두 배 만들기 (파이썬) (0) | 2022.09.29 |