- [Python] 점프 투 파이썬_종합문제_Q15_Duplicate Numbers2021년 12월 10일 12시 49분 13초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
문제
점프 투 파이썬 Q15 문제의 지문은 다음과 같다.
Q15 Duplicate Numbers
0~9의 문자로 된 숫자를 입력받았을 때, 이 입력값이 0~9의 모든 숫자를 각각 한 번씩만 사용한 것인지 확인하는 함수를 작성하시오.
입력 예시: 0123456789 01234 01234567890 6789012345 012322456789
출력 예시: True False False True False
작성 코드
아래는 Q15 문제를 해결하기 위해 작성한 코드이다.
def duplicate_numbers(): nums = input().split(' ') # 입력 받은 '0123456789 01234 01234567890 6789012345 012322456789'을 ['0123456789', '01234', '01234567890', '6789012345', '012322456789'] 리스트로 만듦 rst = [] # 리스트에서 문자열을 하나씩 꺼내 True, False 여부 확인 및 rst 리스트에 결과값 추가 for n in nums: tmp = True for i in range(10): if str(i) not in n or n.count(str(i)) > 1: # 리스트의 각 문자열에 0~9 가 단 하나도 없거나 2개 이상 있는 경우 False tmp = False rst.append(tmp) # 출력 예시(True False False True False)와 같이 출력 for i in rst: print(i, end = ' ') duplicate_numbers() # duplicate_numbers 함수 호출
문제와 해결
위 작성한 코드에는 if 조건문에 두가지의 조건이 주어졌다.
분명히 출력 예시와 동일한 값이 출력되어야 하는데 아래와 같이 출력되었다.
True True True True True
두 조건을 분리해 하나씩 적용해 보면 정상 작동한다.
어처구니 없게도 if 조건문에 and를 썼다.
그러니 무슨 짓을 해도 True가 출력 될 수 밖에...
and와 or의 기능은 명백한데,
결과를 반대로 기대하는 경우가 종종있어 주의해야 한다.
위 코드는 if 조건문에 or로 수정된 정상 작동하는 코드이다.
728x90반응형'CS > 코딩 테스트' 카테고리의 다른 글
[알고리즘][파이썬] 백준_1436_영화감독 숌 (0) 2021.12.13 [Python] 점프 투 파이썬_종합문제_Q16_모스 부호 해독 (0) 2021.12.13 [Python] 점프 투 파이썬_종합문제_Q14_문자열 압축하기 (0) 2021.12.09 [Python] 점프 투 파이썬_종합문제_Q13_DashInsert 함수 (0) 2021.12.09 [알고리즘][파이썬] 백준_1018_체스판 다시 칠하기 (0) 2021.12.07 댓글