Algorithm/Programmers

[Programmers] 코딩테스트입문 - 로그인 성공?

j4ko 2024. 4. 16. 23:33
728x90
반응형

목차

     

    개요 

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

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

     

    1.  첫 번째 시도

    문제에서 요구하는 조건에 따라 로그인에 성공하는 케이스를 구현한다. 입출력 예시를 보고 조건이 맞았을 때 빨리 Return 할 수 있는 조건을 우선으로 했다.

    def solution(id_pw, db):
        user_id, user_pw = id_pw[0], id_pw[1]
    
        hmap = {}
        for cred in db:
            db_id, db_pw = cred[0], cred[1]
            hmap[db_id] = db_pw
    
        if user_id not in hmap.keys():
            return "fail"
    
        if user_id in hmap.keys():
            if hmap[user_id] == user_pw:
                return "login"
    
        if user_id in hmap.keys():
            if hmap[user_id] != user_pw:
                return "wrong pw"

     

     

    2. 두 번째 시도

    "db"라는 파라미터는 2차원 배열이다. 이를 dict() 라는 built-in 함수로 사용하면 dictionary 타입으로 변환이 가능하다. 이 특징을 감안해 dictionary로 초기화하는 구문을 단순화 시켰다.

     

    def solution(id_pw, db):
        user_id, user_pw = id_pw[0], id_pw[1]
    
        hmap = dict(db)
    
        if user_id not in hmap.keys():
            return "fail"
    
        if user_id in hmap.keys():
            if hmap[user_id] == user_pw:
                return "login"
    
        if user_id in hmap.keys():
            if hmap[user_id] != user_pw:
                return "wrong pw"

     

    3. 세 번째 시도

    조건이 같은 경우를 그룹화했다. 

    def solution(id_pw, db):
        user_id, user_pw = id_pw[0], id_pw[1]
    
        hmap = dict(db)
    
        if user_id not in hmap.keys():
            return "fail"
    
        if user_id in hmap.keys():
            if hmap[user_id] == user_pw:
                return "login"
            if hmap[user_id] != user_pw:
                return "wrong pw"
    728x90
    반응형