
처음에 작성한 코드
numbers=[42, 42, 42, 42,42,42,42,42,42,42]
for i in range(10):
number = int(input())%42
for j in range(10):
if numbers[j] != number and numbers[j]==42:
numbers[j] = number
break
elif numbers[j] != number:
continue
elif numbers[j] == number:
break
count = 0
for i in range(10):
if numbers[i] != 42:
count +=1
print(count)
처음에는 조건문을 2가지 경우의 수로 나누었음
1) numbers[j] != number
2) numbers[j] == number
하지만 이렇게 되면 새로운 값이 배열에 더해져서 원소값이 업데이트된 경우와 그렇지 않은 경우를 구분할 수 없음.
즉, 조건문이 조건을 검사하기에는 불충분함.
다음으로는 3가지 경우로 나누어봄
1) numbers[j] != number and numbers[j] == 42
2) numbers[j] != number
3) numbers[j] == number
값은 정확하게 출력하나, 2)번 조건문에서는 사실상 어떤 동작도 수행하지 않음
따라서 2)번 조건문 삭제
나머지가 될 수 없는 42를 리스트에 저장하여 업데이트 되지 않은 원소임을 표현하려 했으나,
명확성이 떨어진다고 판단하여 리스트 초기 원소를 None으로 변경
최종 제출한 코드
numbers=[None, None, None, None, None, None, None, None, None, None]
for i in range(10):
number = int(input())%42
for j in range(10):
if numbers[j] != number and numbers[j]==None:
numbers[j] = number
break
elif numbers[j] == number:
break
count = 0
for i in range(10):
if numbers[i] != None:
count +=1
print(count)
set() 활용하여 더 쉽게 숫자 개수 구하는 방법
https://pacific-ocean.tistory.com/35