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

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

728x90

 

https://hyejin.tistory.com/1232

 

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

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

hyejin.tistory.com

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

 

 

 

2. ๊ด„ํ˜ธ ๋ฌธ์ž ์ œ๊ฑฐ 

์„ค๋ช…

์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์—์„œ ์†Œ๊ด„ํ˜ธ ( ) ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‚จ์€ ๋ฌธ์ž๋งŒ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

 

์ž…๋ ฅ

์ฒซ ์ค„์— ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 100์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

 

์ถœ๋ ฅ

๋‚จ์€ ๋ฌธ์ž๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.

 

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

(A(BC)D)EF(G(H)(IJ)K)LM(N)

 

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

EFLM

 

 

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

public String solution(String str)
{
   String answer = "";
   Stack<Character> stack = new Stack<>();
   
   for (char c : str.toCharArray())
   {
      if (c == '(')
      {
         stack.push(c);
      } else if (c == ')'){
         stack.pop();
      } else {
         if (stack.isEmpty()) answer += c;
      }
   }
   
   return answer;
}

๐Ÿ‘ฉ‍๐Ÿ’ป : ์ด ๋ฌธ์ œ๋Š” ์ด ์ „ ํ’€์ด์™€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž๋Š” stack์— ๋„ฃ์ง€ ์•Š๊ณ , '(' ๋ฅผ stack์— push ํ–ˆ๋‹ค๊ฐ€ ')' ๋ฅผ ๋งŒ๋‚˜๋ฉด pop ํ•˜๋ฉด ๋˜๊ณ , '('์™€ ')'๊ฐ€ ์•„๋‹ ๋•Œ, stack์ด ๋น„์–ด์žˆ๋‹ค๋Š”๊ฑด ๊ด„ํ˜ธ ๋ฌธ์ž๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค๋Š” ์–˜๊ธฐ์ด๋ฏ€๋กœ ๊ทธ ๋•Œ๋Š” answer ๋ฌธ์ž์—ด์— ๋ฌธ์ž๋ฅผ ๋”ํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

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

public String solution2(String str)
{
   String answer = "";
   Stack<Character> stack = new Stack<>();
   
   for (char c : str.toCharArray())
   {
      if (c == ')') {
         while (stack.pop() != '('); // pop์€ ๊บผ๋‚ด๊ณ  ๊ทธ ๊บผ๋‚ธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
      }else
      {
         stack.push(c);
      }
   }
   
   for (int i = 0; i< stack.size(); i++)
   {
      answer += stack.get(i);
   }
   
   return answer;
}

๐Ÿ‘พ : ๊ฐ•์‚ฌ๋‹˜์€ ์šฐ์„  ')' ์•„๋‹Œ ๋ฌธ์ž๋Š” stack์— ๋ชจ๋‘ push ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— ')' ์ด๋ฉด stack์—์„œ ์ด์ œ pop๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ 

์ด๋•Œ pop() ๋ฉ”์„œ๋“œ๋Š” stack์—์„œ ๊บผ๋‚ธ ๋‹ค์Œ, ํ•ด๋‹น ๊บผ๋‚ธ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ pop๋ฅผ ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ ๋ฌธ์ž๊ฐ€ '(' ์ด๋ฉด '(' ๊ณผ ')' ์‚ฌ์ด์— ์žˆ๋Š” ๋ฌธ์ž๊นŒ์ง€ ๋ชจ๋‘ pop ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— while (stack.pop() != '(')) ๋กœ ์กฐ๊ฑด๋ฌธ์„ ๊ฑธ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 

stack.pop() == '(' ๋ผ๋Š” ๊ฑด '(' ๊นŒ์ง€ pop ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

๊ทธ ๋‹ค์Œ stack์„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋Œ๋ฉด์„œ stack.get(i)๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๊บผ๋‚ด๊ณ  answer์— ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90