JS100 quick sort, 괄호문자열, 연속되는 수
52
quick sort
과정 설명
리스트 안에 있는 한 요소를 선택한다. 이렇게 고른 원소를 피벗(pivot) 이라고 한다.
피벗을 기준으로 피벗보다 작은 요소들은 모두 피벗의 왼쪽으로 옮겨지고 피벗보다 큰 요소들은 모두 피벗의 오른쪽으로 옮겨진다. (피벗을 중심으로 왼쪽: 피벗보다 작은 요소들, 오른쪽: 피벗보다 큰 요소들)
피벗을 제외한 왼쪽 리스트와 오른쪽 리스트를 다시 정렬한다.
분할된 부분 리스트에 대하여 순환 호출 을 이용하여 정렬을 반복한다.
부분 리스트에서도 다시 피벗을 정하고 피벗을 기준으로 2개의 부분 리스트로 나누는 과정을 반복한다.
부분 리스트들이 더 이상 분할이 불가능할 때까지 반복한다.
리스트의 크기가 0이나 1이 될 때까지 반복한다.
https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html
function quickSort(arr){
if (arr.length <= 1){
return arr;
}
const pivot = arr[0];
const left = [];
const right = [];
for (let i=1; i<arr.length; i++){
if(i<pivot){
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(pivot, quickSort(right));
//재귀함수로 조건이 맞을때까지 돌려준다.
}
const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10));
console.log(quickSort(array));
53
괄호 문자열
괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 바른 문자열, 그렇지 않은 문자열을 바르지 않은 문자열이라 부르도록 하자.
(())와 같은 문자열은 바른 문자열이지만 ()()) 와 같은 문자열은 바르지 않은 문자열이다.
(해당 문제에서는 소괄호만 판별하지만, 중괄호와 대괄호까지 판별해 보세요.)
입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자.
function mathBrackets(e){
let count = 0;
//괄호 개수가 같지 않으면 false
for (let i=0; i<e.length; i++){
if (e[i] === '('){
count++;
}
if (e[i] === ')'){
count--;
}
}
if (count !== 0){
return false;
}
let 괄호 = [];
for (let i in e){
if (e[i] === '(') {
괄호.push('(');
}
if (e[i] === ')') {
if (괄호.length === 0) {
return false;
} // '('보다 ')'더 많아지면 안되니까 '('없이 ')'이게 나오면 안된다.
괄호.pop();
}
}
return true;
}
const n = prompt('입력해주세요.').split('');
if (mathBrackets(n) === true) {
console.log('YES');
} else {
console.log('NO');
}
(()())
())()(
54
연속되는 수
다섯 숫자가 연속하는지 yes,no 로 판별하는 프로그램을 작성하시오.
입력1
1 2 3 4 5
출력1
YES
입력2
1 4 2 6 3
출력2
NO
function sol(l){
l.sort((a,b) => {
return a-b;
});
for (let i=0; i<l.length-1; i++){
if(l[i]+1 !== l[i+1]){
return 'NO';
}
}
return 'YES';
}
const n = prompt('입력해주세요').split(' ').map(n => parseInt(n, 10));
console.log(sol(n));
<>
Author And Source
이 문제에 관하여(JS100 quick sort, 괄호문자열, 연속되는 수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@heyho9292/JS100-quick-sort저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)