프로그래머스/파이썬_입문

로그인 성공? +dict()

싱싱한복초이 2025. 1. 11. 10:54

https://school.programmers.co.kr/learn/courses/30/lessons/120883

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

[문제 설명]

머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 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