BOJ_2751 수 정렬하기 2
- TOC {:toc}
이 글은 백준 온라인 저지의 2751번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2021.05.18 (Python)
메모리 | 시간 | 코드 길이 |
---|---|---|
152524 KB | 1348 ms | 168 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
문제 이해 | 15:28:22 | 15:28:25 | |
풀이 생각 | 15:28:37 | 15:28:47 | |
코딩 | 15:32:46 | 15:35:28 |
import sys
input = sys.stdin.readline
print = sys.stdout.write
L = []
for _ in range(int(input())):
L.append(int(input()))
L.sort()
print("\n".join(map(str, L)))
아이디어 & 풀이
Python sort()
를 이용해 정렬한다.
sort()
의 시간 복잡도는 nlogn으로 퀵 정렬이나 병합 정렬과 같은 시간 복잡도를 갖기 때문에 기본 정렬 알고리즘 문제를 풀 때와 큰 차이 없이 작성해도 된다.- 파이썬 자료형 별 주요 연산자의 시간 복잡도 (Big-O) by 초보몽키의 개발 블로그
피드백
stdin
이나stdin.read()
를 직접 사용하는 연습을 좀 해야겠다.
2022.03.20 (JS)
메모리 | 시간 | 코드 길이 |
---|---|---|
170116 KB | 2212 ms | 226 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
문제 이해 | 14:18:08 | 14:18:45 | |
풀이 생각 | 14:18:47 | 14:19:34 | |
코딩 | 14:19:44 | 14:21:13 |
const fs = require("fs");
const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");
input.shift();
function main(num) {
num.sort((a, b) => a - b);
return num.join("\n");
}
console.log(main(input));
피드백
sort
안에서 문자를 비교하면 각 조합마다 숫자로 변환해야 하니까 미리 숫자로map
해서 비교하는 것보다 오래걸린다. 숫자 값을 비교할 때는 먼저map
으로 변환한 다음에 정렬하는 게 나을듯.
참고 답안
# 풀이 1-1
from sys import stdin, stdout
input()
L = sorted(map(int, stdin.read().split()))
stdout.write("\n".join(map(str, L)))
# 풀이 1-2
from sys import stdin, stdout
L = sorted(stdin.read().split()[1:], key=int)
stdout.write("\n".join(L))
# 풀이 1-3
print("".join(sorted([*open(0)][1:], key=int)))
아이디어 & 풀이
sorted()
를 이용해서 처음 입력 받은 리스트를 정렬한 뒤 L
에 대입한다.
-
open()
을 이용해서stdin
의 입력을 받을 수도 있다(풀이 1-3).- *open(0) Python by SyHoMadara @ Codeforces
- Integer File Descriptor “0” in open() by Stackoverflow
-
입력할 때
int
로 변환할 필요 없이sorted
의key
로int
를 보내서 정렬하면 이후에join()
을 위해 다시str
로 변환하는 과정을 생략할 수 있다.
-
ps-python