상식을 증명하는 방법이 어렵다는 것을 깨닳는 경험을 했다
시작은 단순한 문제에서 시작했다
로그인 성공?
-머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
- 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
- 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
def solution(id_pw, db):
answer = ''
for i in range(len(db)): # 로그인검증
if id_pw == db[i]:
answer = "login"
elif id_pw[0] == db[i][0] and id_pw[1] != db[i][1]:
answer = "wrong pw"
elif id_pw[0] != db[i][0] and id_pw[1] != db[i][1]:
answer = "fail"
elif id_pw[0] != db[i][0] and id_pw[1] == db[i][1]:
answer = "fail"
return answer
각자 조건을 지정해서 입력된 아이디와 비밀번호를 대조하고 그 결과를 도출하도록 하면되는 것이다
문제의 정답은 비교적 쉽게 나왔지만 팀원과 토론할 사항이 된 것은
마지막에 있는 문항이다
elif id_pw[0] != db[i][0] and id_pw[1] == db[i][1]:
answer = "fail"
이 부분이 없어야 정답으로서 성립이 된다
테스트 케이스에서는 문제없이 작동되지만
문제를 정답처리하기 위해서 행해지는 과정에서는 한부분, 이 한부분이 문제가 생겼다
ID가 일치하지 않고 PW가 일치할 때
fail 처리를 한다
논리 상의 어색함이 있고, 그걸 처리하는 방식에 문제가 있는 부분이다
조건에 있어서 ID는 중복이 없기 때문에 생기는 과정인데
해당 문항 같은 경우는 상식의 선에 불합치 하다는 것을 알 수 있다
곰곰히 생각하지 않더라도 이게 잘못되었다는 것을 알 수 있는데
논의하고자 한 것은 어째서 아닌가.
예제를 논하면서 그 이유를 찾아보려 했지만
전제가 잘못된 것을 논하는 것은 의미가 없는 것이다
문이 뒤틀려 열리지 않는 것처럼 뒤틀린 논제를 붙잡고 있는 것이다
결국 이 일은 해결되지않았다
내 나름의 결론이라기 보단 이 전제 에서
4번 조건이 성립되지 않는 단적인 요인은
ID와 PW가 일치할때는 로그인이라는 1번조건
ID불일치 PW일치 시 실패하는 4번 조건
이 두 조건이 모순하기 때문이다
PW가 일치해도 ID는 로그인 하기 위해 입력한 값과 다를 수 있다
이는 ID가 중복되지 않아야하는 선행조건이 있기에 그런 것이고
해당하는 4번 조건은 이 선행조건이 있기 때문에
존재하지 않는 경우의 수라 볼 수 있는 것이다
답이 어째서 답인지는 비교적 설명하기 쉽다
문제와 답간의 명확한 길이 나있기 때문이다
반면 어째서 답이 될 수 없는지는 많은 사고력을 필요로 했다
그냥 아닌거니까, 답이 될 수 없으니까 라는 말로 끝맺음 하는 것보다
그것을 이해하고, 이해시키기 위해 논하는 것은 어려웠다
'코딩 오늘' 카테고리의 다른 글
2023.04.25 (0) | 2023.04.26 |
---|---|
2023.04.24 (0) | 2023.04.25 |
2023.04.20 (0) | 2023.04.21 |
2023.04.19 (0) | 2023.04.20 |
2023.04.18 (0) | 2023.04.19 |
댓글