TIL 알고리즘[로그인 확인]

2023. 4. 26. 22:21TIL/2023.4월

2023.04.26 수

 

문제

변수 id_pw는 리스트 형태로 id_pw[0]에는 id를 id_pw[1]에는 pw의 값을 가지고 있다

변수 db에는 리스트의 형태로 id,pw 값을 가지고 있다

이때, id와 pw가 모두 일치하면 "login", id만 일치하고 pw가 일치하지 않는다면 "wrong pw", 모두 일치하지 않는다면 "fail"을 출력하게 만든다면?

 

시도

#login이 출력되어야 한다
id_pw = ["meosseugi", "1234"]
db = [["rardss", "123"], ["yyoom", "1234"], ["meosseugi", "1234"]]
#기본제공 형식코드
def solution(id_pw, db):
    answer = ''
    
    return answer

1. db를 for문을 이용하여 id_pw와 값을 비교시켜야한다.

def solution(id_pw, db):
    answer = ''
    for db_is in db:
    
    return answer

db_is는 for문을 도는 db의 값을 받는다.

 

2.if 조건문을 사용하여, id와 pw를 비교한다 주소를 이용하여 id와 pw를 각각 비교한다.

def solution(id_pw, db):
    answer = ''
    for db_is in db:
        if id_pw[0] == db_is[0] and id_pw[1] == db_is[1]: #id,pw가 같을 때
            answer = "login"
            break
            
    return answer

 and를 사용하여 둘 다 True일 때 answer에 login 값을 부여한다, 또한 return을 사용하여 연산을 끝낸것이 아니기에 일치한다면 break를 사용하여 연산을 종료시켜 불필요한 연산을 막아준다.

 

2-1.elif를 사용하여 id만 같을 때를 조건으로 준다.

def solution(id_pw, db):
    answer = ''
    for db_is in db:
        if id_pw[0] == db_is[0] and id_pw[1] == db_is[1]: #id,pw가 같을 때
            answer = "login"
            break
        elif id_pw[0] == db_is[0]: #id만 같을 때    
            answer = "wrong pw"
            break
    return answer

pw를 비교하지 않는 이유는 위의 if문에서 이미 pw가 같을 때를 조건으로 연산하였기 때문이다, 즉 id가 다르고 pw가 같으면 elif 연산을 벗어나 "fail"을 출력하며, id와 pw가 같은 경우는 if문에서 break에 걸려 연산이 종료되기 때문이다.

 

2-2. else를 이용하여 이후 모든 경우는 "fail"을 출력하게 한다.

def solution(id_pw, db):
    answer = ''
    for db_is in db:
        if id_pw[0] == db_is[0] and id_pw[1] == db_is[1]: #id,pw가 같을 때
            answer = "login"
            break
        elif id_pw[0] == db_is[0]: #id만 같을 때    
            answer = "wrong pw"
            break
        else:
            answer = "fail"    
    return answer

+)

def solution(id_pw, db):
    answer = ''
    for db_is in db:
        if id_pw[0] == db_is[0] and id_pw[1] == db_is[1]: #id,pw가 같을 때
            answer = "login"
            break
        elif id_pw[0] == db_is[0]: #id만 같을 때    
            answer = "wrong pw"
            break
        elif id_pw[0] != db_is[0] and id_pw[1] == db_is[1]:
            answer = "wrong id"
            break
        else:
            answer = "fail"    
    return answer

이 코드를 사용한다면, id가 다르고 pw가 같을 때, wrong id를 출력할 수 있다.

 

생각한 점

실제 로그인 기능을 구현할 때 저렇게 힌트를 많이 주지 않는다고 알고있습니다, id만 일치하든 pw만 일치하든 id,pw 둘 다 불일치하든, 계정보안을 위해 "id,pw를 확인해 주세요" 이렇게 힌트는 최소한으로 준다고 하더라구요. 

'TIL > 2023.4월' 카테고리의 다른 글

TIL 토큰 인증  (0) 2023.04.30
TIL django image field  (1) 2023.04.27
TIL bin, int  (0) 2023.04.25
TIL onclick ()  (0) 2023.04.24
TIL CORS  (0) 2023.04.21