Skip to content

Commit 5952440

Browse files
committed
Solve: 052, 053
1 parent d3c3d9f commit 5952440

File tree

4 files changed

+155
-0
lines changed

4 files changed

+155
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 문제52 : quick sort
2+
3+
다음 빈 칸을 채워 퀵 정렬을 완성해주세요.
4+
5+
```js
6+
function quickSort(arr){
7+
if (arr.length <= 1){
8+
return arr;
9+
}
10+
11+
const pivot = arr[0];
12+
const left = [];
13+
const right = [];
14+
15+
for (let i=1; i<arr.length; i++){
16+
if(/*빈칸을 채워주세요*/){
17+
left.push(arr[i]);
18+
} else {
19+
right.push(arr[i]);
20+
}
21+
}
22+
return /*빈칸을 채워주세요*/
23+
}
24+
25+
const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10));
26+
27+
console.log(quickSort(array));
28+
```
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
# 문제52 : quick sort
3+
4+
다음 빈 칸을 채워 퀵 정렬을 완성해주세요.
5+
6+
```js
7+
function quickSort(arr){
8+
if (arr.length <= 1){
9+
return arr;
10+
}
11+
12+
const pivot = arr[0];
13+
const left = [];
14+
const right = [];
15+
16+
for (let i=1; i<arr.length; i++){
17+
if(빈칸을 채워주세요){
18+
left.push(arr[i]);
19+
} else {
20+
right.push(arr[i]);
21+
}
22+
}
23+
return 빈칸을 채워주세요
24+
}
25+
26+
const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10));
27+
28+
console.log(quickSort(array));
29+
```
30+
*/
31+
32+
function quickSort(arr){
33+
if (arr.length <= 1){
34+
return arr;
35+
}
36+
37+
const pivot = arr[0];
38+
const left = [];
39+
const right = [];
40+
41+
for (let i=1; i<arr.length; i++){
42+
if(arr[i] < pivot){
43+
left.push(arr[i]);
44+
} else {
45+
right.push(arr[i]);
46+
}
47+
}
48+
return quickSort(left).concat(pivot, quickSort(right));
49+
}
50+
51+
const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10));
52+
53+
console.log(quickSort(array));
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 문제53 : 괄호 문자열
2+
3+
괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 **바른 문자열**, 그렇지 않은 문자열을 **바르지 않은 문자열**이라 부르도록 하자.
4+
5+
(())와 같은 문자열은 바른 문자열이지만 ()()) 와 같은 문자열은 바르지 않은 문자열이다.
6+
(해당 문제에서는 소괄호만 판별하지만, 중괄호와 대괄호까지 판별해 보세요.)
7+
8+
**입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자.**
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
3+
# 문제53 : 괄호 문자열
4+
5+
괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 **바른 문자열**, 그렇지 않은 문자열을 **바르지 않은 문자열**이라 부르도록 하자.
6+
7+
(())와 같은 문자열은 바른 문자열이지만 ()()) 와 같은 문자열은 바르지 않은 문자열이다.
8+
(해당 문제에서는 소괄호만 판별하지만, 중괄호와 대괄호까지 판별해 보세요.)
9+
10+
**입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자.**
11+
12+
*/
13+
14+
function DistinctionParenthesis(){
15+
const input = prompt('괄호 문자열을 입력하세요').split('');
16+
const small = input.filter((value) => value === "(" || value === ")");
17+
const medium = input.filter((value) => value === "{" || value === "}");
18+
const large = input.filter((value) => value === "[" || value === "]");
19+
if( small.length%2 === 1 || medium.length%2 === 1 || large.length%2 === 1 ){
20+
return "NO"
21+
} else {
22+
if( small[0] === ')' || medium[0] === '}' || large[0] === ']' ){
23+
return "NO"
24+
} else if( small.filter((value) => value === ")").length !== small.length/2 || medium.filter((value) => value === "}").length !== medium.length/2 || large.filter((value) => value === "]").length !== large.length/2 ) {
25+
return "NO"
26+
} else {
27+
let left = 0;
28+
let right = 0;
29+
for(let i = 0; i<small.length; i++){
30+
if(small[i] === "("){
31+
left++;
32+
} else {
33+
right++;
34+
}
35+
if(right > left){
36+
return "NO"
37+
}
38+
}
39+
for(let i = 0; i<medium.length; i++){
40+
if(medium[i] === "{"){
41+
left++;
42+
} else {
43+
right++;
44+
}
45+
if(right > left){
46+
return "NO"
47+
}
48+
}
49+
for(let i = 0; i<large.length; i++){
50+
if(large[i] === "{"){
51+
left++;
52+
} else {
53+
right++;
54+
}
55+
if(right > left){
56+
return "NO"
57+
}
58+
}
59+
if(right === left){
60+
return "YES"
61+
}
62+
}
63+
}
64+
}
65+
66+
DistinctionParenthesis();

0 commit comments

Comments
 (0)