일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 배열
- 탐색
- Git
- 백준
- MiniHeap
- 분할 정복
- 알고리즘
- 스택
- 기초
- 자료구조
- NQueen
- format 메서드
- 재귀 함수
- 파이썬
- 동적 계획
- 이진 탐색
- git hub
- 트리
- 순차 탐색
- 정렬
- 그래프
- 우분투
- UNIX
- IT
- 자기개발
- 그리디
- 유닉스
- 문법
- type 함수
- sys.stdin.readline()
Archives
- Today
- Total
코딩고치
[파이썬][백준] 10989번: 수 정렬하기 본문
1. 문제
주소: https://www.acmicpc.net/problem/10989
- 중복되는 수가 나오므로 계수 정렬을 이용하여 풀었다.
- 각각의 숫자가 몇 개가 나오는지 해당하는 리스트 인덱스에 입력
5 | 2 | 3 | 1 | 4 | 2 | 3 | 5 | 1 | 7 |
입력받는 수
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
count | 0 | 2 | 2 | 2 | 1 | 2 | 0 | 1 |
리스트 인덱스를 이용하여 해당 숫자가 몇 개 나오는지 입력
- 앞에서부터 차례대로 해당 인덱스를 count만큼 출력
2. 소스코드
import sys
n = int(sys.stdin.readline())
list = [0 for i in range(10001)]
for i in range(n):
num = int(sys.stdin.readline())
list[num] += 1
for i in range(10001):
if list[i] != 0:
for j in range(list[i]):
print(i)
- 입력을 받기 위해 input()이 아닌 sys 라이브러리에 있는 sys.stdin.readline()을 이용
- sys.stdin.readline()이 input()보다 속도가 빠름
- 이 문제에서 input()으로 풀면 시간 초과가 나지만 sys.stdin.readline()으로 풀면 정답 처리가 됨.
'파이썬 > 백준 문제' 카테고리의 다른 글
[파이썬][백준] 1074번: Z (0) | 2020.05.29 |
---|---|
[파이썬][백준] 2747번: 피보나치 수 (0) | 2020.05.28 |
[파이썬][백준] 11650번: 좌표 정렬하기 (0) | 2020.05.27 |
[파이썬][백준] 10814번: 나이순 정렬 (0) | 2020.05.27 |
[파이썬][백준] 1427번: 소트인사이드 (0) | 2020.05.27 |
Comments