[백준] 3052번(다른 숫자의 개수 구하기)

·2022년 10월 21일

백준 문제풀이

목록 보기
4/159


처음에 작성한 코드

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

profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글