가오리의 코딩일기

코드업 기초 100제 14. 기초 - 1차원 배열(1) 본문

Python/코드업 기초 100제

코드업 기초 100제 14. 기초 - 1차원 배열(1)

류경혜 2022. 5. 16. 20:00
1. 배열≒상자
 - 같은 자료형의 데이터들을 하나의 변수로 정의
 - 원하는 번호로 검색해서 한 번에 찾을 수 있음
 - 메모리 삭제 시 공간이 그대로 있음(→낭비)
 - 주소를 하나 추가했을 때 뒤로 한 칸씩 밀려서 저장됨
 
 
2. 리스트≒화살표
 - 서로 다른 자료형의 데이터들도 하나의 변수로 정의할 수 있음
 - 배열처럼 검색해서 한 번에 찾아가는게 아니라 순차적으로 넘어감
 - 메모리 삭제 시 그 주소와의 연결을 끊고(?) 다음 주소와 연결해버림
 - 주소를 하나 추가했을 때 빈 공간에 저장해두고 바로 연결

 

[93] 이상한 출석 번호 부르기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())
call = map(int, input().split()) 
number = [0]*23 # 0~22번지(총 23칸)까지 0으로 채움
for c in call:
    number[c-1] += 1 # 기존 값인 0에 +1 -> 몇 번 호출되었나
print(*number)       # 리스트 형태 말고 공백으로 구분해서 출력

Point

- 배열에 비어있는 공간을 미리 확보해 놓을 수 없다 -> 쓰레기 값을 치우고 어떠한 값으로 초기화를 해야 함

- 호출되는 번호의 값을 기존 값에 1을 더해 저장한다 -> 몇 번 호출되었는지 카운트 하려고