์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch05. Stack, Queue (์ž๋ฃŒ๊ตฌ์กฐ) : ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

2023. 10. 26. 14:31ใ†์ธํ”„๋Ÿฐ/์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ž…๋ฌธ : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„

728x90

 

https://hyejin.tistory.com/1231

 

์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet (ํ•ด์‰ฌ, ์ •๋ ฌ์ง€์› Set) : K๋ฒˆ์งธ ํฐ ์ˆ˜ (TreeSet)

https://hyejin.tistory.com/1230 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet (ํ•ด์‰ฌ, ์ •๋ ฌ์ง€์› Set) : ๋ชจ๋“  ์•„๋‚˜๊ทธ๋žจ ์ฐพ๊ธฐ https://hyejin.tistory.com/1229 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet

hyejin.tistory.com

-> ์ด์ „ ๋ฌธ์ œ ํ’€์ด 

 

 

 

1. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ 

์„ค๋ช…

๊ด„ํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด “YES", ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์œผ๋ฉด ”NO"๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

(())() ์ด๊ฒƒ์€ ๊ด„ํ˜ธ์˜ ์Œ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ„์น˜ํ•˜๋Š” ๊ฑฐ์ง€๋งŒ, (()()))์€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 30์ด๋‹ค.

 

์ถœ๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— YES, NO๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์‹œ ์ž…๋ ฅ 1 

(()(()))(()

 

์˜ˆ์‹œ ์ถœ๋ ฅ 1

NO

 

๋ฌธ์ œ ํ’€์ด 1

public String solution(String s)
{
   String answer = "NO";
   Stack<Character> stack = new Stack<>();
   
   for (char c : s.toCharArray())
   {
      if (c == '(') {
         stack.push(c);
      }
      else if (c == ')') {
         if (stack.size() != 0) {
            if (stack.peek() == '(')
            {
               stack.pop();
            }
         }else {
            stack.push(c);
         }
      }
   }
   
   if (stack.size() == 0)
      return "YES";
   
   return answer;
}

๐Ÿ‘ฉ‍๐Ÿ’ป : ์ด ๋ฌธ์ œ๋Š” ์˜ˆ์ „์— ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ํ•œ๋ฒˆ ํ•ด๋ดค๋˜ ๊ธฐ์–ต์ด ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค. 

๋ณดํ†ต Stack ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ๋‚ผ ๋•Œ ๊ด„ํ˜ธ ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ๊ผญ ๋‚˜์˜จ๋‹ค๊ณ  ํ•œ๋‹ค.  ใ…Žใ…Ž (์ฐธ๊ณ ) 

 

์ผ๋‹จ ์ด ๋ฌธ์ œ๋Š” ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋ฉด ๊ทธ ๋ฌธ์ž์—ด์˜ ๊ด„ํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด YES ๋ฆฌํ„ด ์•„๋‹ˆ๋ฉด NO ๋ฆฌํ„ดํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 

 

์˜ˆ์‹œ ์ž…๋ ฅ

(()(()))(()

์„ ๋ณด๋ฉด '(' ํ•˜๋‚˜ ๋‚จ๊ธฐ ๋•Œ๋ฌธ์— ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ๋‹ต์€ NO๊ฐ€ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค. 

 

์šฐ์„  Character ๋ฌธ์ž๋ฅผ ๋‹ด๋Š” Stack ์„ ๋งŒ๋“ค๊ณ , ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ ค์„œ ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ '(' ์ด๋ฉด stack์— ๋„ฃ๊ณ , ')' ์ด๋ฉด stack์—์„œ pop ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

๊ทผ๋ฐ ์ด๋•Œ stack์ด ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ์— pop์„ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. (์—†๋Š”๋ฐ popํ•˜๋ ค๊ณ  ํ•ด์„œ) ๊ทธ๋Ÿฌ๋ฏ€๋กœ stack.size๊ฐ€ 0์ด ์•„๋‹ˆ๊ณ , stack์˜ ๊ฐ’์ด '(' ์ผ ๊ฒฝ์šฐ์— pop์„ ํ•˜๋„๋ก ํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ stack.size๊ฐ€ 0์ด๋ฉด stack์— ')' ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋„๋ก ํ–ˆ๋‹ค. (์ด ๋ถ€๋ถ„์€ ๊ตณ์ด ์•ˆํ•ด๋„ ๋์„ ํ…๋ฐ,.) 

 

์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ค ๋Œ๊ณ  ๋‚˜์„œ stack์˜ size๊ฐ€ 0์ด๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋ผ๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— YES๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋˜๊ณ 

size๊ฐ€ 0์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋Œ€๋กœ NO๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

 

๋ฌธ์ œ ํ’€์ด 2

public String solution2(String str)
{
   String answer = "YES";
   Stack<Character> stack = new Stack<>();
   
   for (char x : str.toCharArray())
   {
      if (x == '(') {
         stack.push(x);
      } else {
         if (stack.isEmpty()) { // ๋‹ซ๋Š” ๊ด„ํ˜ธ ')'๊ฐ€ ๋งŽ์€ ์ƒํ™ฉ
            return "NO";
         }
         stack.pop();
      }
   }
   
   if (!stack.isEmpty()) // ์—ฌ๋Š” ๊ด„ํ˜ธ '(' ๊ฐ€ ๋งŽ์€ ์ƒํ™ฉ
      return "NO";
   
   return answer;
}

๐Ÿ‘พ : ๊ฐ•์‚ฌ๋‹˜์€ ์ด ๋ฌธ์ œ๋ฅผ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์—ˆ๋‹ค. ์šฐ์„  ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์„œ for๋ฌธ ๋Œ๋ ค  stack์— ๋„ฃ๋Š” ๊ฑด ๋™์ผํ•˜๋‹ค. ์šฐ์„  char x ๊ฐ€ '(' ์ด๋ฉด stack์— push ํ•˜๊ณ , ')' ์ด๋ฉด stack์—์„œ pop ํ•˜๋ฉด ๋œ๋‹ค. ๊ทผ๋ฐ ์ด๋•Œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ stack์ด ๋น„์–ด ์žˆ์œผ๋ฉด ')'๊ฐ€ ๋” ๋งŽ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ์ด๋•Œ๋Š” ๋ฐ”๋กœ return NO ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  stack์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด stack์—์„œ ')' ๊ฐ’์„ 'pop' ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

๋ฐ˜๋ณต๋ฌธ์„ ๋‹ค ๋Œ๊ณ  ๋‚˜์„œ stack์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ•œ๋ฒˆ ๋” ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š”๋ฐ ์ด๋•Œ ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ '('์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋” ๋งŽ์•„์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— NO๋ฅผ ๋ฆฌํ„ดํ•ด์ค€๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ stack์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ๊ทธ๊ฑด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋ผ๋Š” ๋ง์ด๊ธฐ ๋•Œ๋ฌธ์— YES ๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'์ธํ”„๋Ÿฐ > ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ž…๋ฌธ : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch05. Stack, Queue (์ž๋ฃŒ๊ตฌ์กฐ) : ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ (์นด์นด์˜ค)  (1) 2023.10.27
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch05. Stack, Queue (์ž๋ฃŒ๊ตฌ์กฐ) : ๊ด„ํ˜ธ ๋ฌธ์ž ์ œ๊ฑฐ  (0) 2023.10.27
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet (ํ•ด์‰ฌ, ์ •๋ ฌ์ง€์› Set) : K๋ฒˆ์งธ ํฐ ์ˆ˜ (TreeSet)  (0) 2023.10.25
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet (ํ•ด์‰ฌ, ์ •๋ ฌ์ง€์› Set) : ๋ชจ๋“  ์•„๋‚˜๊ทธ๋žจ ์ฐพ๊ธฐ  (0) 2023.10.24
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet (ํ•ด์‰ฌ, ์ •๋ ฌ์ง€์› Set) : ๋งค์ถœ์•ก์˜ ์ข…๋ฅ˜  (0) 2023.10.23