내코드
def solution(id_pw, db):
for i in db:
if i[0] == id_pw[0]:
if i[1] == id_pw[1]:
return "login"
else:
return "wrong pw"
return "fail"
코드설명
- for문을 이용해 db를 순회하면서 각 회원 정보를 확인합니다.
- 입력된 id_pw와 비교하여 아이디가 일치하면 비밀번호를 추가로 검사합니다.
- 아이디와 비밀번호가 모두 일치하면 "login"을 반환합니다.
- 아이디는 일치하지만 비밀번호가 다르면 "wrong pw"를 반환합니다.
- 루프가 끝날 때까지 일치하는 아이디가 없다면 "fail"을 반환합니다.
특징
- 직관적이고 읽기 쉬운 코드입니다.
- for문을 이용해 조건을 순차적으로 검사하므로, 데이터의 크기가 커지면 성능이 다소 저하될 수 있습니다.
다른 코드
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"
코드설명
- dict(db)를 이용해 회원 정보 리스트를 딕셔너리로 변환합니다.
- id_pw[0](아이디)을 키로 사용해 딕셔너리에서 비밀번호를 찾습니다.
- 아이디가 존재하고 비밀번호가 일치하면 "login"을 반환합니다.
- 비밀번호가 다르면 "wrong pw"를 반환합니다.
- 아이디가 존재하지 않으면 "fail"을 반환합니다.
특징
- 딕셔너리를 사용해 탐색 속도가 빠릅니다.
- 코드가 간결하고 Python의 최신 문법(:= 연산자)을 활용합니다.
- db의 크기가 크면 초기 딕셔너리 변환 비용이 발생합니다.
두 코드 비교
- 효율성:
- 내코드는 순차 탐색 방식을 사용해 데이터 크기 증가에 따라 탐색 시간이 증가합니다.
- 다른 코드는 딕셔너리 변환을 통해 탐색 시간이 일정합니다.
- 가독성:
- 내코드는 로직이 명확히 드러나 초보자도 쉽게 이해할 수 있습니다.
- 다른 코드는 최신 문법과 딕셔너리를 활용해 간결하지만, 익숙하지 않은 문법이 포함되어 있습니다.
- 유연성:
- 내코드는 추가 기능(예: 특정 조건 추가)이 필요할 때 더 쉽게 수정할 수 있습니다.
- 다른 코드는 간결성을 유지하기 위해 복잡한 수정에는 부적합할 수 있습니다.
결론
- 데이터 크기가 작거나 로직을 명확히 전달하고 싶다면 내코드가 적합합니다.
- 데이터 크기가 크거나 성능이 중요한 경우 다른 코드가 더 유리합니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 다항식 더하기 (1) | 2024.12.26 |
---|---|
프로그래머스 | Python | 캐릭터의 좌표 (2) | 2024.12.24 |
프로그래머스 | Python | 직사각형 넓이 구하기 (1) | 2024.12.20 |
프로그래머스 | Python | OX퀴즈 (0) | 2024.12.19 |
프로그래머스 | Python | 외계어 사전 (0) | 2024.12.17 |