코드업 기초 100제 문제 093
# 이상한 출석 번호 부르기1
# 정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다.
# 선생님은 출석부를 보고 번호를 부르는데, 학생들의 얼굴과 이름을 빨리 익히기 위해 번호를 무작위(랜덤)으로 부른다.
# 그리고 얼굴과 이름이 잘 기억되지 않는 학생들은 번호를 여러 번 불러 이름과 얼굴을 빨리 익히려고 하는 것이다.
# 출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.
# 입력
# 첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000)
# 두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다.
# 10
# 1 3 2 2 5 6 7 4 5 9
# 출력
# 1번부터 번호가 불린 횟수를 순서대로 공백으로 구분하여 한 줄로 출력한다.
# 1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
소스
더보기
n = int(input())
num = list(map(int, input().split()))
countList = [0 for _ in range(23)]
# 1 23*n번 비효율적
for i in range(0, 23):
count = 0
for j in num:
if i+1 == j:
count += 1
countList[i] = count
print(*countList)
# 2 n번
for i in num:
countList[i-1] += 1
print(*countList)
1번 풀이 같은 경우 2중 반복문을 통해 1번이 몇 명이 있는지, 2번이 몇 명이 있는지 이렇게 카운트를 하여 count를 리스트에 저장하는 일일이 세는 방법입니다. 이 방법의 경우 보는 사람이 쉽게 이해할 수 있지만 연산의 수가 많아 비효율적으로 보입니다.
2번 풀이의 경우 입력한 num 리스트만을 확인하여 그값이 countList(출석부)의 인덱스랑 매칭이 되기 때문에 num리스트만을 확인하여 매칭 되는 인덱스의 값에 1씩 추가를 해줄 수 있습니다.
'파이썬 > 코트업 기초 100제' 카테고리의 다른 글
코드업 기초 100제 문제 095 (0) | 2022.02.07 |
---|---|
코드업 기초 100제 문제 094 (0) | 2022.02.07 |
코드업 기초 100제 문제 092 (0) | 2022.02.04 |
코드업 기초 100제 문제 091 (0) | 2022.02.04 |
코드업 기초 100제 문제 090 (0) | 2022.02.04 |