1093 : [기초-1차원배열] 이상한 출석 번호 부르기1
[codeup] 코드업 기초 100제 1093번 풀이 - 파이썬(python)
문제 ::
정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다.
선생님은 출석부를 보고 번호를 부르는데,
학생들의 얼굴과 이름을 빨리 익히기 위해 번호를 무작위(랜덤)으로 부른다.
그리고 얼굴과 이름이 잘 기억되지 않는 학생들은 번호를 여러 번 불러
이름과 얼굴을 빨리 익히려고 하는 것이다.
출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.
참고
각 번호가 불린 횟수를 기록하고 출력하기 위해 변수 23개를 선언할 수도 있다.
하지만 C언어에서는 같은 이름에 번호를 붙여 사용하는 배열(array)을 사용할 수 있다.
이는 마치 아파트의 동 호수(예를 들어 a동 101호)와 같이 번호를 붙여 집을 구분하는 것과
비슷하다.
예를 들어 a동 101호를 다르게 표현하면 a[101] 과 같은 표현이 가능한 것이다.
이렇게 번호를 붙여 데이터를 저장할 수 있는 변수인 배열을 사용하기 위해서는
변수처럼, 사용하기 전에 선언해주어야 하는데 아래와 같은 방법으로 가능하다.
입력 ::
첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000)
두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다.
출력 ::
1번부터 번호가 불린 횟수를 순서대로 공백으로 구분하여 한 줄로 출력한다.
입력 예시 ::
10
1 3 2 2 5 6 7 4 5 9
출력 예시 ::
1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
정답 코드 ::
num = int(input())
numlist = input().split()
arr = [0 for _ in range(24)]
for i in range(num):
arr[int(numlist[i])] += 1
for i in range(1, 24):
print(arr[i], end = ' ')
오랜만에 설명을 적어보려한다.
이 앞의 포스팅까지는 코드만 봐도 바로 이해할만큼 쉬웠다.
이 코드 또한 어려운 코드가 아니다. 굉장히 쉬운 코드지만 여태 풀은 문제 중에선 생각을 좀 하게 되었다.
arr = [0 for _ in range(24)]
arr = []
for i in range(24) :
arr.append(0)
이 코드 같은 경우는 리스트 컴프리헨션을 사용한 것으로 코드 간략화를 하기 위해 이렇게 작성하였다.
위에 코드는 이 코드를 줄인 것이다.
24개의 0이 들아간 칸으로 이루어진 리스트를 만들어준 것이다.
여기서 솔직히 내가 처음에 문제를 대충 읽어서 그런 것일 수 있는데
arr[int(numlist[i])] += 1에서 왜 더하기 1을 하는지 의문이 생겨서 코드를 좀 찾아보다가 자세히 보고 이해할 수 있었다.
반복문을 통해 현재 arr[] 안에 입력받은 numlist[i]번째에 해당하는 수를 1씩 증가시켜준다.
예를 들어 입력 예시에 1이 1번, 2가 2번, 3이 1번 이렇게 되어 있으니 이렇게 작성하는 것이다.
이렇게 num만큼 반복해준 후
새로운 반복문을 사용하여 print() 함수를 사용하여 arr를 출력해주면 된다.
모범 답안 ::
a=input()
b=input().split()
n=int(a)
arr=[]
for i in range(24) :
arr.append(0)
for i in range(n) :
arr[int(b[i])]+=1
for i in range(1, 24) :
print(arr[i], end=' ')
'Algorithm > CodeUp basic 100' 카테고리의 다른 글
CodeUp(코드업) - 기초 100제 : 1085~1092 풀이 - 파이썬(python) (0) | 2021.01.31 |
---|---|
CodeUp(코드업) - 기초 100제 : 1078~1084 풀이 - 파이썬(python) (0) | 2021.01.28 |
CodeUp(코드업) - python(파이썬) 1092 : [기초-종합] 함께 문제 푸는 날 풀이 (0) | 2021.01.26 |
CodeUp(코드업) - python(파이썬) 1091 : [기초-종합] 수 나열하기3 풀이 (0) | 2021.01.26 |
CodeUp(코드업) - python(파이썬) 1090 : [기초-종합] 수 나열하기2 풀이 (0) | 2021.01.25 |