목록문제 (388)
sm 기술 블로그
import sys input = sys.stdin.readline N = int(input()) num_arr = [0]*10001 for i in range(N): num_arr[int(input())] += 1 # 카운팅 for i in range(10001): for _ in range(num_arr[i]): print(i) 카운팅 정렬 카운팅 정렬이란 정렬하고자 하는 배열에 해당 인덱스에 수를 하나씩 증가시켜 중복되는 수가 있더라도 빠르게 정리 가능한 방법이다. 문제 해결 최대 10000보다 작거나 같은 자연수가 입력될 수 있다. 따라서 카운팅하기 위한 배열 num_arr를 만들어 준다. 이후 배열에 값에 따라 num_arr의 수를 증가시켜주고 결과를 출력시켜준 것이다.
let input = require("fs").readFileSync(0).toString().trim().split("\n").map(Number); input.shift(); console.log(input.sort((a, b) => a - b).join("\n")); input.shift() 값의 기준을 오른쪽으로 이동 시킨다. 예를들어 5 5 4 1 2 3 을 입력 받으면 input shift()를 통해 값은 5 4 1 2 3 으로 된다. 자바스크립트에서는 sort를 문자로 정렬을 한다. 때문에 12 21 5 가 있다면 5가 가장 작지만 12 , 21 , 5순으로 정렬한다. 그것을 방지하기 위해 a와 b의 값을 비교해서 양수면 a가 더 크고 음수면 b가 더 크게 된다. 오름차순 arr.sort((..
import sys input = sys.stdin.readline print(*sorted([int(input()) for _ in range(int(input()))])) 문제 요약 언어에 있는 요소들을 잘 써서 더 빠르게 정렬 가능함? 해결 파이썬에서 input의 속도는 sys에 비해서 비교적 많이 느리다. 때문에 import sys input = sys.stdin.readline 을 통해서 input의 속도를 sys만큼 끌어 올리는 것이다. 기본 문법은 import sys sys.stdin.readline() 다음과 같다. 근데 우리는 input이 익숙하기 때문에 input을 sys속도 만큼 끌어 올리는 첫번째 문법을 이용하는 것을 추천한다. sorted는 파이썬에 내장된 정렬함수로 *을 붙여주면..