• 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()를 이용해 정렬한다.

피드백

  • 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).

  • 입력할 때 int로 변환할 필요 없이 sortedkeyint를 보내서 정렬하면 이후에 join()을 위해 다시 str로 변환하는 과정을 생략할 수 있다.