JavaScript 백준 온라인 알고리즘 공부
백준 10818 번 JavaScript 문제
const fs = require("fs");
const [n, ...arr] = (process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `5
20 10 35 30 7`
)
.trim()
.split(/\s/);
let Minimum = Number(arr[0]);
let Maximum = Number(arr[0]);
for (let i = 0; i < n; i++) {
ArrNum = Number(arr[i]);
if (Maximum < ArrNum) {
Maximum = ArrNum;
}
}
for (let i = 0; i < n; i++) {
ArrNum = Number(arr[i]);
if (Minimum > ArrNum) {
Minimum = ArrNum;
}
}
console.log(Minimum + " " + Maximum);
sort 메서드
를 사용하는 방법도 있지만 너무나 매직같은 메서드라 지금 이 문제에서 쓰는건 알고리즘 공부에 적합하지 않는다고 생각했다. const fs = require("fs");
const [n, ...arr] = (process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `5
20 10 5 30 7
`
)
.trim()
.split(/\s/);
for (let i = 0; i < n - 1; i++) {
for (let z = 0; z < n - 1; z++) {
LNum = Number(arr[z]);
RNum = Number(arr[z + 1]);
if (LNum > RNum) {
let mum = LNum;
LNum = RNum;
RNum = mum;
arr[z] = LNum;
arr[z + 1] = RNum;
}
}
}
console.log(arr[0] + " " + arr[n - 1]);
버블정렬 (bubble sort)
를 기억한걸 토대로 다시 짠 코드. 배열의 인접 숫자들을 전부 대조해 결과적으로 가장 작은 수는 배열 처음에 가장 큰 수는 배열 마지막에 배치되며 배열 양 끝을 지정하고 출력한다. 뭔가 많이 번거로운 느낌이다.
다른 언어는 모르겠지만 자바스크립트에서는 임의의 변수를 따로만들어 배열에 넣어두고 교환해야한다. 문제는 이 코드는 로컬에서는 잘 작동하지만 시간을 많이 걸리는 로직이였는지 BOJ에서는 시간초과로 불합격이다.....
const fs = require("fs");
const [n, ...arr] = (process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `5
20 10 35 30 7`
)
.trim()
.split(/\s/);
let Minimum = Number(arr[0]);
let Maximum = Number(arr[0]);
for (let i = 0; i < n; i++) {
ArrNum = Number(arr[i]);
if (Maximum < ArrNum) {
Maximum = ArrNum;
}
if (Minimum > ArrNum) {
Minimum = ArrNum;
}
}
console.log(Minimum + " " + Maximum);