입력
: 첫 번째 줄에 Bubble 정렬을 진행할 수(들)의 개수를 입력하고 둘째 줄에 해당 개수에 맞게 수를 입력한다.출력
: Bubble sort가 완료된 형태의 수열> 5
> 9 6 3 2 7
> 2 3 6 7 9
(마지막은 공백으로 끝남 주의)readline
처음사용=>rl.close()
의 적절하지 못한 사용으로 상당한 시간 소요split
: 공백기준으로 자르기 위해 사용했는데 메서드에러가 자꾸 떴다.line.split(" ")
을 사용할 수 없었던 것split
: 문자열을 분할하는 메서드=>array.split
을 시도해서 안됐던 것split
: 그래서 input[1].split
으로 특정 배열값을 지정해줬지만 값이 차례로 들어오기 때문에 input[1]
에 아직 값이 저장되지 않아서 에러readline
: rl.close()
가 더 이상의 입력을 받지 않도록 하는 메서드=>적절한 위치에 사용해야 함number[]
에 저장// Run by Node.js
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var count = 0 //Bubble 정렬을 진행할 수(들)의 개수
var number = [] //수
rl.on("line", function(line) {
number.push(line) //입력값 number에 차례로 저장
if(number.length >= 2){ //다 입력 받은 후 실행
count = parseInt(number.splice(0,1)) //number[0]을 떼어서 숫자로 변환 후 count에 저장 (기존 number[0]은 삭제됨)
number = number[0].split(" ") //남은 number[0]값을 공백단위로 분리
number = number.map(item => parseInt(item)) //number 배열 안의 값을 숫자로 변환
var temp
for(var i=0; i<count; i++){ //Bubble Sort 알고리즘
for(var j=0; j<count-1-i; j++){
if(number[j]>number[j+1]){
temp = number[j+1]
number[j+1] = number[j]
number[j] = temp
}
}
}
number = number.join(" ") //배열 형태를 문자열 형태로 바꿔줌
number = number + " " //맨 끝에 공백이 들어가야 한다는 Q/A따라서 맨 끝에 공백추가
rl.close();
}
}).on("close", function() {
console.log(number)
process.exit();
});
프로그래머스처럼 다른 사람들의 풀이를 볼 수 있으면 좋을텐데..아쉽당
그리고 제출하기를 눌렀지만 마지막 테스트케이스 두개가 오답으로 떴다..
이유를 아시는 분은 지나가시다가 슬쩍 알려주시면 감사하겠습니다 ㅎㅎㅎㅠ
바보같은 경험이지만 앞으론 프로그램 사용법을 더 꼼꼼히 확인해야한다는 것을 배웠기 때문에 괜찮다...