[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
Tip::
- 파이썬에서는 배열의 비어있는 공간을 미리 확보해 놓을 수 없다.따라서 필요한 갯수 만큼 '어떠한 값'으로 초기화 시켜주어야 한다.
- ex) LIST = list(range(23)) >> 0~22번지까지 0-22의 숫자들로 채워진다.
- ex) LIST = [0 for _ in range(23)] >> 0~22번지까지 0으로 채워진다.
- 호출되는 번호(주소값)의 값을 기존 값에서 +1하여 저장해주는 방식으로 해당 번호가 몇 번 호출되었는지 카운트할 수 있다.
- 아래 코드에서 '*(Asterisk)'를 사용한 이유
- 문제에서 원하는 출력값은 리스트 형태가 아닌, 내부의 원소를 그대로 출력하길 요구했기 때문이다.
- ex) print( [1,2,3] ) >> [1,2,3]
- ex) print( *[1,2,3] ) >> 1 2 3
- '*(Asterisk)' 배우러가기
더보기
langList = int(input())
randNumber = list(0 for i in range(0, langList))
numberList = list(map(int, input().split()))
for i in range(0, langList):
randNumber[i] = numberList[i]
listLangList = [0 for _ in range(23)]
for i in randNumber:
# i는 listNumber의 배열값이고, listNumber가 1이면 lsitLangList에는 0번에 들어가야하기때문에 -1을 해준다.
listLangList[i-1] += 1
#아스타리스크를 사용하면 배열을 뜯고 출력 가능하다.
print(*listLangList)
[94] 이상한 출석 번호 부르기2
출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자.
입력
첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000)
두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다.
10
10 4 2 3 6 6 7 9 8 5
출력
출석을 부른 번호 순서를 바꾸어 공백을 두고 출력한다.
5 8 9 7 6 6 3 2 4 10
Tip::
- 리스트의 메소드인 reverse()를 이용하면 된다.
더보기
#출제자 답안에서 n번은 왜 조건으로 넣은 지 모르겠다, n을 쓰질 않던데?
langList = int(input())
randNumber = list(0 for i in range(0, langList))
numberList = list(map(int, input().split()))
#범위를 정하여 생성한 랜드넘버리스트와 범위를 정하지않고 입력받은 리스트 넘버리스트를 랭 리스트만큼 대입하여 랜드넘버리스트에 넣어준다.
#따라서, 지정한 범위만큼 입력받은 넘버가 들어간다.
for i in range(0, langList):
randNumber[i] = numberList[i]
[95] 이상한 출석 번호 부르기3
출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.
입력
첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000)
두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다.
10
10 4 2 3 6 6 7 9 8 5
출력
출석을 부른 번호 중에 가장 빠른 번호를 1개만 출력한다.
2
Tip::
- 가장 작은 값을 찾으면 된다.
- 파이썬에서는 배열(iterable) 객체의 원소 중 가장 작은 값을 반환해주는 min() 함수를 제공하고 있다.
더보기
langList = int(input())
randNumber = list(0 for i in range(0, langList))
numberList = list(map(int, input().split()))
for i in range(0, langList):
randNumber[i] = numberList[i]
print(min(randNumber))
'Python > Python-코드업 100제' 카테고리의 다른 글
Python 코드업 100제 [15, 기초-2차원 배열] (0) | 2022.02.21 |
---|---|
Python 코드업 100제 [13, 기초-종합] (0) | 2022.02.06 |
Python 코드업 100제 [12, 기초-반복실행구조] (0) | 2022.02.05 |
Python 코드업 100제 [11, 기초-조건/선택실행구조] (0) | 2022.02.03 |
Python 코드업 100제 [10, 기초-삼항연산] (0) | 2022.01.27 |