프로그래머스

[프로그래머스] 로그인 성공?_Python

미스터 한뺑 2023. 3. 23. 17:53
반응형

1. 문제 설명 

머쓱이는 프로그래머스에 로그인 할려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 [id_pw]와

회원들의 정보가 담기 2차원 배열[db]가 주어질때 , 다음과 같이 로그인 성공 , 실패에 따른 메시지를 return 하도록

solution 함수를 완성해주세요 

 

- 아이디와 비밀번호가 모드 일치하는 회원정보가 있으면 'login'을 return 합니다.

- 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 'fail'를 , 아이디는 일치하지만 비밀번호가 일치하는 회원이

  없다면 'wrong pw'를 return 합니다.

 

2. 제한사항

- 회원들의 아이디는 문자열입니다.

- 회원들의 아이디는 알바벳 소문자와 숫자로만 이루어져 있습니다.

- 회원들의 패스워드는 숫자로 구성된 문자열입니다 .

- 회원들의 비밀번호는 같은 수 있지만 아이디는 같을  수 없습니다 .

- id_pw의 길이는 2입니디ㅏ

- id_pw와 db의 원소는 [아이디,패스워드]형태입니다.

- 1 ≤ 아이디의 길이 ≤ 15

- 1 ≤ 비밀번호의 길이 ≤ 6

- 1 ≤ db의 길이 ≤ 10

- db의 원소의 길이는 2입니다

 

3. 문제풀이 

문제를 봤을 때 문자열이라는 것에 인덱싱이 생각났습니다. 문제를 풀어보면 id_pw와 db 값이 같은 것을 찾아하는 문제입니다. 그래서 for문을 이용해 db 데이터를 하나씩 꺼내서 id_pw와 맞는지 확인하는 코드를 생각했습니다. 

또한 문제 조건을 보면 비밀번호가 다를 때, 아이디와 비밀번호가 같을때, 아이디는 같고 비밀번호가 다를때 이런식으로 조건을 주고 있어서 if문을 써야겠다는 생각을 했습니다.   

 

def solution(id_pw, db):
    for i in db:
        if id_pw[0] in i:
            if id_pw[1] == i[1]:
                return "login"
            else:
                return "wrong pw"
    return "fail"

2번째줄은 db데이터를 for문을 이용해 하나씩 꺼내는 코드입니다 .

3번째줄은 d_pw[0]을 인덱싱을 활용하면  아이디만 가져옵니다. 그래서 꺼낸 데이터에 id가 있는지 조건문을 줘서 확인합니다.

4번째줄은 아이디도 같고 id_pw[1]은 비밀번호만 값이 나옵니다. 그래서 꺼낸 데이터에 pw랑 맞는지 확인하는 코드입니다.

5번줄은 아이디도 같고 비밀번호도 같으면 login을 반환하는 코드입니다

6번째줄은 아이디는 같은데 비밀번호가 다른면 wrong pw를 반환하는 코드입니다.

8번째줄은 아이디가 다른때 fail을 반환하는 코드입니다.

 

 

4. 후기

이 문제를 풀면서 문자열에 대해 다시 공부하는 계기가 되었습니다.  이중 if문을  사용해 문제를 풀 수 있는 스킬이 늘었습니다. 다음에도 이런 문제가 생기면 일단 어떻게 풀어야할지 생각을 먼저한 다음에 하나씩 하나씩 문제를 풀었야겠다는 생각이 들었습니다. 비록 랩 0을 풀고 있지만 문제가 익숙해지면 더 어려운 문제도 풀 수 있다고 생각합니다.  

반응형