๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜ || ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๐Ÿฟ๏ธ ์Šคํƒ/ํ : ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ + ์ฒ˜์Œ ๋งŒ๋‚œ 'ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ'

728x90

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””์—์„œ ๊ฐ™์ด ํ‘ผ ๋ฌธ์ œ์ธ๋ฐ, 

์ฒ˜์Œ์œผ๋กœ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ๋ผ๋Š” ์นœ๊ตฌ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

 

//(โŒ)
function solution(s) {
    if (s.length < 1) return false;
    if (s.startsWith(")")) {
        return false;
    }
    while (s.includes("()")) {
        s = s.replaceAll("()", "")
    }
    return s == "" ? true : false;
}

 

์ด ์ฝ”๋“œ๋Š” ์ฒ˜์Œ ์ž‘์„ฑํ–ˆ๋˜ ์ฝ”๋“œ์ธ๋ฐ, 

 

ํ…Œ์ŠคํŠธ ์ž์ฒด๋Š” ํ†ต๊ณผํ–ˆ์ง€๋งŒ, 

ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ์‹คํŒจํ–ˆ๋‹ค๊ณ  ๋‚˜์™”๋‹ค.

 

 

์ƒˆ๋กœ ๋งŒ๋‚œ ์ฝ”ํ…Œ์˜ ๋ฒฝ,,,,

(์ •ํ™•์„ฑ ํ…Œ์ŠคํŠธ๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค)

 

๋น„๋‚œ๋‹˜์˜ ํžŒํŠธ1

 

๋น„๋‚œ๋‹˜์˜ ํžŒํŠธ2

 

๋น„๋‚œ๋‹˜์˜ ํžŒํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด๋ ‡๊ฒŒ ์ €๋ ‡๊ฒŒ ํ•œ์‹œ๊ฐ„ ์ •๋„๋ฅผ ์Šค๋ฌด๊ณ ๊ฐœ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ, ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๋ฐฉ์‹์œผ๋กœ๋Š” ๋„์ €ํžˆ ํ†ต๊ณผ๊ฐ€ ์•ˆ๋๋‹ค.๐Ÿ˜ฟ

 

 

 

 

ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์ถœ์ฒ˜ : ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์‚ฌ์ดํŠธ์—์„œ๋Š” 'ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„' ๋ฅผ ํ…Œ์ŠคํŠธํ•œ๋‹ค๊ณ  ๊ฐ„๋‹จํžˆ ๋‚˜์™€์žˆ๋‹ค.

์ง€๋‚œ๋ฒˆ์— ์ž ๊น ์Šค์น˜๋“ฏ ๊ณต๋ถ€ํ–ˆ๋˜ ๋น…O ๊ฐ€ ๋ฐ”๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ, ์ผ๋ฐ˜์ ์ธ ๋ฐ˜๋ณต๋ฌธ์˜ ๊ฒฝ์šฐ O(N) ์ด ๋œ๋‹ค๊ณ ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค.

 

ํšจ์œจ์„ฑ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ, ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์ธ์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€์ด๋‹ค. ์ˆ˜ํ–‰ ์‹œ๊ฐ„๊ณผ ์‚ฌ์šฉ ๋ฉ”๋ชจ๋ฆฌ์ˆœ์œผ๋กœ ์ค‘์š”ํ•˜๋‹ค. ์„ฑ๋Šฅ๊ณผ๋Š” ๊ด€๊ณ„ ์—†์ง€๋งŒ ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜๋‹ค.

  • ๋ถ€์กฑํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ถ”๊ฐ€๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ถ€์กฑํ•œ ์‹œ๊ฐ„์€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค. ๋ฌธ์ œ์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ ์‹œ๊ฐ„๋ณด๋‹ค ์‚ฌ์šฉ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋” ์ค‘์š”ํ•œ ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๋” ์ค‘์š”ํ•˜๋‹ค.
  • ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ ๋ฌธ์ œ์˜ ํฌ๊ธฐ์™€ ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ๋Š” ๋ฌธ์ œ์˜ ํฌ๊ธฐ๋ฅผ ๋จผ์ € ํŒŒ์•…ํ•˜๊ณ  ์ ํ•ฉํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.

์ˆ˜ํ–‰ ์‹œ๊ฐ„

์ž…๋ ฅ์˜ ํฌ๊ธฐ N์— ๋Œ€ํ•ด์„œ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ๋Œ€๋žต์ ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์–ด๋–ค ํ•ด๊ฒฐ ๋ฐฉ์‹์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๊ณ  ์ ํ•ฉํ•œ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด๋ผ๊ณ  ํŒ๋‹จ๋˜๋ฉด ์ ์šฉํ•œ๋‹ค. Big O ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰, ์ตœ์•…์˜ ๊ฒฝ์šฐ์— ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆด์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
O(100000000)์˜ ๊ฒฝ์šฐ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ ๋Œ€๋žต์ ์œผ๋กœ 1์ดˆ ์ •๋„๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ๊ฐ„ ์ œํ•œ์ด ์žˆ๋Š” ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๋Œ€๋žต์ ์ธ ๋Œ€์ž…์„ ํ†ตํ•ด ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€๋žต 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„

์‹œ๊ฐ„ ๋ณต์žก๋„N

O(1) -
O(log) -
O(N) 100000000
O(N log) 5000000
O(N) 10000
O(N) 500
O(2) 20
O(N!) 10

 

 

์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ ๋ คํ•˜๋Š” ์ด์œ 

ex) ์šฐ๋ฆฌ๋‚˜๋ผ ์ธ๊ตฌ 5000๋งŒ๋ช…์ค‘์—์„œ ํ•œ ์‚ฌ๋žŒ์„ ์กฐํšŒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ 2๊ฐœ๊ฐ€ ์žˆ๋‹ค. 

A์•Œ๊ณ ๋ฆฌ์ฆ˜: O(log n)

B์•Œ๊ณ ๋ฆฌ์ฆ˜: O(n^2)

->A์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 25๋ฒˆ, B์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 2500000000000000๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

->A์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 1์ดˆ๋„ ์•ˆ๋˜๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. 

->B์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 120์ผ ์ •๋„ ๊ฑธ๋ฆฐ๋‹ค..

(ํ—‰..)

 

ํ•˜๋“œ์›จ์–ด๋ฅผ ๋ฐœ์ „ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—(๋ฌด์–ด์˜ ๋ฒ•์น™: 1๋…„๋งŒ์— ๋ฐ˜๋„์ฒด ์ง‘์ ๋ฅ ์ด 2๋ฐฐ์”ฉ..)

์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฐœ์ „ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๊ฒŒ ๋Š๊ปด์ง€๊ธด ํ•˜์ง€๋งŒ...

๊ทธ๋Ÿผ์—๋„ ์šฐ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด๋ž€ ์†Œ์ค‘ํ•œ ์ž์›์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ ์–ธ์ œ๋‚˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์„ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๋…ธ๋ ฅ์„ ์ตœ์ ํ™”๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

 

 

 

๐ŸŒด ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๊ฐ€ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ

-> ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๋ฅผ ์ž˜๋ชป ์ƒ๊ฐํ•˜๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

๊ธฐ์กด์— ํ’€์—ˆ๋˜ ๋ฐฉ์‹์„ ๋ณด๋ฉด

 

")" ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ•œ๊ฐ€์ง€ ๊ฒฝ์šฐ๋งŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  while ๋ฌธ ์•ˆ์— includes, replaceAll ์„ ๋„ฃ์€๊ฒŒ ๋ฌธ์ œ์˜€๋‹ค.

includes ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด -> replaceAll ๋กœ () ๋ฅผ ํ•œ๋ฒˆ์— ์—†์• ์ฃผ๋Š”๋ฐ, 

์—†์• ๋ฉด์„œ ๋‹ค์‹œ s ์— ์žฌํ• ๋‹นํ•˜๋Š” ๋น™๋น™๋„๋Š” ์ฝ”๋“œ์˜€๋‹ค.

์ €๋ ‡๊ฒŒ ์ „์ฒด๋ฅผ ๋Œ๊ณ  ๋„๋Š” ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ํ†ต๊ณผํ•  ์ˆ˜ ์—†๋‹ค!

 

 

 

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ๋ดค๋Š”๋ฐ, ๋Œ€์ฒด๋กœ '(' ๊ฐฏ์ˆ˜์™€ ')' ๊ฐฏ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.

array ๋กœ ๋ฐ”๊พผ ํ’€์ด๋“ค๋„ ์žˆ์—ˆ์ง€๋งŒ,   

ํ˜•๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š์€ ๊ฐ€์žฅ ๊น”๋”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ํ’€์ด๋ฅผ ๊ฐ€์ ธ์™”๋‹ค.

(๋น„๋‚œ๋‹˜๊บผ์ž„ ๊ป„๊ป„๊ป„ ์ด์ฏค๋˜๋ฉด ๋น„๋‚œ๋‹˜ ๋‚ด ๊ต๊ณผ์„œ)

function solution(s) {
    let count = 0;

    for (const char of s) {
        if (char === '(') count++;
        else count--;

        if (count < 0) return false;
    }
    return count === 0;
}

for ๋ฌธ์˜ of ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ž ํ•˜๋‚˜ํ•˜๋‚˜ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ๋ฐ, ํƒ์ƒ‰์„ ํ•˜๋ฉด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ count ์— ์ˆซ์ž๋ฅผ ๋”ํ•˜๊ณ  ๋นผ๋Š” ๋ฐฉ์‹์ด๋‹ค. 

์•„ ๊ทธ๋ฆฌ๊ณ  return ์— falsy ๊ฐ’์„ ์ด์šฉํ•ด ๊ฐ„๋‹จํžˆ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ๋„ ๋„ˆ๋ฌด ์ข‹๋‹ค!

(๋‚˜์˜€์œผ๋ฉด ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ ? true : false ์ผ์„ ํ…๋ฐ)

 

 

์•„๋ž˜ ํ’€์ด๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด ์ค‘ ๋น„์Šทํ•œ ํ’€์ด. 

๋”ํ•˜๊ณ  ๋นผ๋Š” ๋ถ€๋ถ„์„ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์กฐ๊ธˆ ๋” ๊ฐ€๋…์„ฑ์ด ์ข‹์•„๋ณด์ธ๋‹ค.

function solution(s){
    let cum = 0
    for (let paren of s) {
        cum += paren === '('? 1: -1
        if(cum < 0) {
            return false
        }
    }
    return cum === 0? true: false;
}

 

 

 

 

์•Œ๋ฉด ์•Œ ์ˆ˜๋ก ๊ณต๋ถ€ํ•  ๊ฒŒ ์ •๋ง ๋งŽ๋‹ค!

์‹ ๊ธฐํ•œ ์ปดํ„ฐ ์„ธ์ƒ!

 

 

 

 

 

 

 

๋‚ด์šฉ ์ถœ์ฒ˜

https://velog.io/@nmrhtn7898/%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4-%EC%9C%A0%EC%9D%98%EC%82%AC%ED%95%AD

 

[ps] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด ์œ ์˜์‚ฌํ•ญ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ, ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์ธ์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€์ด๋‹ค. ์ˆ˜ํ–‰ ์‹œ๊ฐ„๊ณผ ์‚ฌ์šฉ ๋ฉ”๋ชจ๋ฆฌ์ˆœ์œผ๋กœ ์ค‘์š”ํ•˜๋‹ค. ์„ฑ๋Šฅ๊ณผ๋Š” ๊ด€๊ณ„ ์—†์ง€๋งŒ ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ

velog.io

https://mimimimamimimo.tistory.com/2

 

<Time Complexity : ์‹œ๊ฐ„๋ณต์žก๋„> ๊ตฌํ•˜๋Š” ๋ฒ• + ์ฝ”๋”ฉ ํŒ

What? ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜ˆ์ƒ๋˜๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์„ ํ‘œํ˜„ํ•œ ๊ฒƒ ํƒ€์ด๋จธ๋กœ ์‹ค์ œ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‹คํ–‰๋  ๋•Œ ๋™์ž‘ํ•˜๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๊ฐ€ ๋ช‡ ๋ฒˆ์ธ์ง€๋ฅผ n(์ž…๋ ฅ๋ฐ์ดํ„ฐ ํฌ๊ธฐ)์— ๊ด€ํ•œ ์‹์œผ๋กœ

mimimimamimimo.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•