은공지능 공작소 :: '로그인 성공 프로그래머스' 태그의 글 목록

'로그인 성공 프로그래머스'에 해당되는 글 1건

반응형

안녕하세요. 은공지능 공작소의 파이찬입니다.
오늘부터 프로그래머스 파이썬 알고리즘 문제풀이를 하나씩 올려보려고 합니다.
거의 2년 반 만의 포스팅이네요... 이전 회사에서 너무 바쁜 나날들을 보냈습니다.

오늘 풀어볼 문제는 "로그인 성공?" 이라는 문제입니다.

 

문제 바로가기 ↓ 하단 링크 클릭

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

 

프로그래머스

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

programmers.co.kr

 

 

 

 

1. for문을 이용하여 input parameter 하나씩 살펴보기

 

def solution(id_pw, db):
    for id, pw in db:
        print(id, pw)
output
----------------------------
rardss 123
yyoom 1234
meosseugi 1234
아이디와 비밀번호가 각각 for문의 id, pw라는 변수에 담겼습니다.
먼저 db에 담긴 내용을 살펴보겠습니다.
현재 test case1에 대해서만 출력을 해보았는데, 결과는 위와 같습니다.

 

 

 

2. if 문으로 분기 나누기

 

그 다음으로 생각해 봐야 하는 것은 if 문으로 분기를 나누는 것입니다.
id와 pw를 비교해야 하는데, 어떤 것을 더 상위의 if문으로 둘 것인지 생각해봐야 합니다.

만약 id가 일치하는 회원이 없다면?
그냥 "fail"을 return해주고 종료하면 됩니다.
id가 틀렸는데 pw를 굳이 또 체크할 필요가 있을까요? 그럴 필요는 없습니다 ㅎㅎ

id가 일치하는 회원이 있다면, 여기서 또 분기를 2개로 나눠야 합니다.
① pw가 일치할 경우 -> "login"을 return
② pw가 일치하지 않을 경우 -> "wrong pw"를 return
def solution(id_pw, db):
    for id, pw in db:
        if id_pw[0] == id:
            if id_pw[1] == pw:
                return "login"
            else:
                return "wrong pw"
    return "fail"

 

★ 체크포인트① ★
list indexing을 이용한 id_pw 접근
id_pw는 대괄호로 묶여있는 자료구조로, 이러한 것을 python에선 list라고 부릅니다.
list의 각 요소에 접근하기 위한 방법을 indexing이라고 부르는데요,
대괄호 안의 숫자로 각 요소에 접근할 수 있습니다. (ex- id_pw[0])

+ Python index의 시작 번호는 1번 부터가 아닌 0번 부터입니다.
그러므로 id_pw[0]이라고 하는 것은, 리스트의 첫 번째 요소에 접근한다는 뜻 입니다.
id_pw = ["meosseugi", "1234"]
현재 id_pw라는 리스트는 위와 같이 구성되어 있습니다.
그러므로 id_pw[0]을 사용하면, "meosseugi"라는 id값에 접근하게 됩니다.
마찬가지 원리로 id_pw[1]는 리스트의 두 번째 요소를 가리키며,
"1234"라는 값을 반환합니다.

 

 

 

def solution(id_pw, db):
    for id, pw in db:
        if id_pw[0] == id:
            if id_pw[1] == pw:
                return "login"
            else:
                return "wrong pw"
    return "fail"
★ 체크포인트② ★
return 명령어를 활용한 함수 즉시 종료
return 명령어는 함수를 즉시 종료합니다.
해당 함수는 solution이라는 이름을 갖고 있습니다.

그러므로 위 코드를 풀이해보면,
하나라도 id와 pw가 맞는 경우가 있다면 바로 "login"을 return하고
함수가 종료된다는 뜻입니다.

만약 for문이 종료될 동안 하나도 if문에 걸리는게 없다면 어떨까요?
맨 마지막 구문인 return "fail"까지 도달하게 됩니다.
이 경우, 입력한 id와 일치하는 것이 db에 없다는 말이 되겠습니다.

 

 

 

3. 핵심 정리

해당 문제를 풀기위해 필요한 개념입니다.

ⓐ 자료구조 list에 대한 이해 (indexing 개념 포함)
for 반복문,
if 분기문
+ return을 활용한 함수 즉시 종료

해당 문제는 파이썬의 기초을 잘 알고 계신 분이라면,
무난하게 풀 수 있었던 문제라고 생각됩니다.
기초를 탄탄히 다지는 것은 언제나 중요합니다!

감사합니다.
반응형
블로그 이미지

pychan

딥러닝에 관련된 시행착오, 사소하지만 중요한 것들, 가능한 모든 여정을 담았습니다.

,