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입니다.
[나의 풀이]
def solution(id_pw, db):
for record in db:
if id_pw[0] == record[0]:
if id_pw[1] == record[1]:
return "login"
else:
return "wrong pw"
return "fail"
[다른 풀이]
1)
def solution(id_pw, db):
if db_pw := dict(db).get(id_pw[0]):
return "login" if db_pw == id_pw[1] else "wrong pw"
return "fail"
⭐:= 왈루스 연산자
왈루스 연산자(:=)는 Python 3.8부터 도입된 연산자로, "값을 변수에 할당하면서 동시에 표현식에서 사용할 수 있게 하는" 기능을 제공합니다. 이를 통해 코드가 간결해지고, 중복 계산을 줄일 수 있습니다.
예) 함수 호출 최적화
# 왈루스 연산자 없이
result = expensive_function()
if result:
print(result)
# 왈루스 연산자 사용
if (result := expensive_function()):
print(result)
2)
def solution(id_pw, db):
answer = 'fail'
for id, pw in db:
if id_pw[0] == id:
if id_pw[1] == pw:
answer = 'login'
else:
answer = 'wrong pw'
return answer
'프로그래머스 > 파이썬_입문' 카테고리의 다른 글
A로 B 만들기 + Counter() (0) | 2025.01.13 |
---|---|
k의 개수 (0) | 2025.01.12 |
옹알이 (1) + 정규표현식 (0) | 2025.01.10 |
등수 매기기 (0) | 2025.01.09 |
특이한 정렬 (0) | 2025.01.08 |