// ๊ดํธ๊ฐ ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ก๋ค๋ ๊ฒ์ '(' ๋ฌธ์๋ก ์ด๋ ธ์ผ๋ฉด ๋ฐ๋์ ์ง์ง์ด์ ')' ๋ฌธ์๋ก ๋ซํ์ผ ํ๋ค๋ ๋ป์
๋๋ค.
/*
"()()" ๋๋ "(())()" ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์
๋๋ค.
")()(" ๋๋ "(()(" ๋ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์
๋๋ค.
*/
// '(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋,
// ๋ฌธ์์ด s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด true๋ฅผ return ํ๊ณ ,
// ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ด๋ฉด false๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
// ๋ฌธ์์ด s์ ๊ธธ์ด : 100,000 ์ดํ์ ์์ฐ์
// ๋ฌธ์์ด s๋ '(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
// ๋ด ์ฝ๋~ ํจ์จ์ฑ ํต๊ณผ ๋ชปํ๋ค ์์ด?
function solution(s){
let answer = true
const arr = s.split("")
const result = {}
arr.forEach((x) => {
result[x] = (result[x] || 0) + 1
})
// "(" ๋ก ์์ ์ํ๊ฑฐ๋ ")" ๋ก ์ ๋๋๋ฉด false
if(s[0] !== "(" || s[s.length-1] !== ")") return false
// "(" ์ ")"์ ์ด ํฉ ๊ฐฏ์๊ฐ ๋ค๋ฅด๋ฉด false
if(result['('] !== result[')']) return false
return answer
}
// ๋ฉํ ๋ ์ฝ๋
// ํจ์จ์ฑ์์ ์คํจ! ํ
function solution(s){
const limit = s.length/2
for(let i = 0 ; i < limit ;i++){
s = s.replace("()", "")
}
return s === ""
}
// ํจ์จ์ฑ ํต๊ณผํ๋ ์ฝ๋
function solution(s){
// ์ฒซ ๋ฌธ์์ด์ด ๋ซํ์๊ฑฐ๋ ๋ง์ง๋ง์ด ์ด๋ ค์๋ค๋ฉด false
if(s[0] ===")" || s[s.length -1] === "(") return false
let depth = 0 // ์์์ ์ฒซ๋ฒ์งธ ๊ฐ์ด "("์ด ์๋ ๊ฒฝ์ฐ ๋ค ์ก์์ depth, i๋ฅผ 1๋ก ์ค์ ํด๋ ํต๊ณผ
for (let i = 0 ; i < s.length; i++){
// ์ด๋ ค์๋ค๋ฉด 1์ ๋ํ๋ค
if( s[i] === "(" ) depth++
else if (s[i] === ")"){
// ๋ซํ์๋ค๋ฉด 1์ ๋บ๋ค
depth--
if (depth < 0) return false
}
}
return depth === 0
}
// reduce()์ ์ค์์น ๋ณ์ ์ฌ์ฉํ ํ์ด
function solution(s){
// ์ฒซ ๋ฌธ์์ด์ด ๋ซํ์๊ฑฐ๋ ๋ง์ง๋ง์ด ์ด๋ ค์๋ค๋ฉด false
if(s[0] ===")" || s[s.length -1] === "(") return false
let fail = false
const answer = s.split(""). reduce( ( acc,cur )=>{
if (acc < 0) {
fail = true
}
return acc + ( cur === "(" ? 1 : -1)
}, 0)
return answer === 0 && !fail
}
// ๋ฌธ์์ด s์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์ซ์๋ค์ด ์ ์ฅ๋์ด ์์ต๋๋ค.
// str์ ๋ํ๋๋ ์ซ์ ์ค ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ฐพ์ ์ด๋ฅผ "(์ต์๊ฐ) (์ต๋๊ฐ)"ํํ์ ๋ฌธ์์ด์ ๋ฐํํ๋ ํจ์,
// solution์ ์์ฑํ์ธ์.
// ์๋ฅผ๋ค์ด s๊ฐ "1 2 3 4"๋ผ๋ฉด "1 4"๋ฅผ ๋ฆฌํดํ๊ณ , "-1 -2 -3 -4"๋ผ๋ฉด "-4 -1"์ ๋ฆฌํดํ๋ฉด ๋ฉ๋๋ค.
// s์๋ ๋ ์ด์์ ์ ์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
// ๋ด ์ฝ๋!
function solution(s){
const arr = s.split(" ")
let max = Math.max(...arr)
let min = Math.min(...arr)
return max.toString() + " " + min.toString()
}
// ๋ฉํ ๋ ์ฝ๋~
function solution(s){
s+= " "
let [min, max] = [ 0,0 ]
let str = ""
for(let i = 0; i<s.length; i++){
if(s[i] === " "){
str = Number(str)
if(min === 0 || max ===0 ){
// ๊ธฐ์ค์ ๊ตฌํ๊ธฐ(๊ฐ์ฅ ๋จผ์ ๊ฐ์ ธ์ค๋ ์ซ์)
[ min, max ] = [ str, str ]
} else {
// ๋๋ฒ์งธ๋ถํฐ ๊ฐ์ ธ์ค๋ ์ซ์
min = str < min ? str : min
max = str > max ? str : max
}
str = ""
continue
}
str+=s[i]
}
return min + " "+max
}
<aside>
๐ค ElasticSearch
๋ฅผ ์คํํด์ CRUD
์ค์ต์ ํด๋ณด์!
</aside>
ElasticSearch
์ฐธ๊ณ ์ฌ์ดํธ
docker-compose.yaml
์์ logstash
์ฃผ์ ์ํค๊ณ ๋น๋ ์ดํ ๋์ปค ๋์ฐ๊ธฐpostman
์์ ํ์ธ