Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Numerical optimization
- 알고리즘
- 근구하기
- graphical models
- 인공지능
- undirected graphical model
- CH01
- 로지스틱 회귀
- 자바ORM표준JPA프로그래밍
- 1차예선
- 이것이 MySQL이다
- vector미분
- secant
- Fisher discriminant analysis
- directed graphical model
- chapter02
- falsePosition
- Perceptron Convergence theorem
- SCPC
- 스터디
- chapter01
- 2018
- MySQL
- 알고리즘대회
- 선형분류
- 델타 rule
- 개발순서
- bisection
- 선형판별분석
- 5397번
Archives
- Today
- Total
computer_study
[정렬/counting sort] BAEKJOON ' 10989'번 '수 정렬하기3 '문제 (C++/python) 본문
알고리즘/문제풀이
[정렬/counting sort] BAEKJOON ' 10989'번 '수 정렬하기3 '문제 (C++/python)
knowable 2020. 8. 7. 02:24문제 : www.acmicpc.net/problem/10989
10989번: 수 정렬하기 3
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
-
문제 해결 아이디어
1. 배열에 모두 저장하여 stl을 활용하여 해결하면 간단한 문제이지만, 최대 1000만개의 데이터가 주어지기에 stl을 이용하지않는다.
2. 입력받은 값들을 모두 저장하지않고 해결하기 위해 counting sort를 이용한다.
( counting sort에 대한 내용은 knowable.tistory.com/17에서 확인할 수 있다. )
-
python
import sys
n = int(sys.stdin.readline())
array = [0] * 10001
for i in range(n):
data = int(sys.stdin.readline())
array[data] += 1
for i in range(10001):
if array[i] != 0:
for j in range(array[i]):
print(i)
처음 n이 최대 1000만까지 입력이 될 수 있기 때문에, 값을 빨리 읽기위해 (시간초과 방지) readline을 사용한다.
-
c++
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
unsigned int num,i;
int main(){
int arr[10001]={0,};
scanf("%u",&num);
for(i=1 ; i< num+1 ; i++){
int tmp;
scanf("%d",&tmp);
arr[tmp]++;
}
for(int j=1; j<10001; j++){
if(arr[j] != 0){
for(int k=0 ; k< arr[j] ; k++)
printf("%d\n",j);
}
}
return 0;
}
처음 n이 최대 1000만까지 입력이 될 수 있기 때문에, 이를 소화하기 위해, unsigned int를 전역변수로 선언해준다.
(지역변수는 스택에 메모리 공간을 잡기 때문에, 큰 배열을 선언하게 되면 해당 프로세스의 스택사이즈를 초과하게된다.
전역변수는 힙 공간에 메모리 공간을 잡기 때문에, 이와같은 제한에서 자유롭다.)
'알고리즘 > 문제풀이' 카테고리의 다른 글
[재귀함수] BAEKJOON '1074'번 'Z'문제 (C++/python) (0) | 2020.08.07 |
---|---|
[재귀함수/DP] BAEKJOON '2747'번 '피보나치 수 '문제 (C++/python) (0) | 2020.08.07 |
[정렬] BAEKJOON ' 10814'번 '나이순 정렬 '문제 (C++/python) (0) | 2020.08.07 |
[정렬] BAEKJOON ' 2750'번, '1427'번 (C++/python) (0) | 2020.08.06 |
[해시/union-find 알고리즘] BAEKJOON ' 4195'번 '친구 네트워크 '문제 (C++/python) (0) | 2020.08.05 |
Comments