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

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

728x90

 

https://hyejin.tistory.com/1237

 

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

https://hyejin.tistory.com/1236 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch05. Stack, Queue (์ž๋ฃŒ๊ตฌ์กฐ) : ์‡ ๋ง‰๋Œ€๊ธฐ https://hyejin.tistory.com/1235 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch05. Stack, Queue (์ž๋ฃŒ๊ตฌ์กฐ) : ํ›„์œ„์‹ ์—ฐ์‚ฐ (postf

hyejin.tistory.com

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

 

 

7. ๊ต์œก ๊ณผ์ • ์„ค๊ณ„ 

์„ค๋ช…

ํ˜„์ˆ˜๋Š” 1๋…„ ๊ณผ์ •์˜ ์ˆ˜์—…๊ณ„ํš์„ ์งœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์—…์ค‘์—๋Š” ํ•„์ˆ˜๊ณผ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•„์ˆ˜๊ณผ๋ชฉ์€ ๋ฐ˜๋“œ์‹œ ์ด์ˆ˜ํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ ์ˆœ์„œ๋„ ์ •ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ด ๊ณผ๋ชฉ์ด A, B, C, D, E, F, G๊ฐ€ ์žˆ๊ณ , ์—ฌ๊ธฐ์„œ ํ•„์ˆ˜๊ณผ๋ชฉ์ด CBA๋กœ ์ฃผ์–ด์ง€๋ฉด ํ•„์ˆ˜๊ณผ๋ชฉ์€ C, B, A๊ณผ๋ชฉ์ด๋ฉฐ ์ด ์ˆœ์„œ๋Œ€๋กœ ๊ผญ ์ˆ˜์—…๊ณ„ํš์„ ์งœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ˆœ์„œ๋ž€ B๊ณผ๋ชฉ์€ C๊ณผ๋ชฉ์„ ์ด์ˆ˜ํ•œ ํ›„์— ๋“ค์–ด์•ผ ํ•˜๊ณ , A๊ณผ๋ชฉ์€ C์™€ B๋ฅผ ์ด์ˆ˜ํ•œ ํ›„์— ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์ˆ˜๊ฐ€ C, B, D, A, G, E๋กœ ์ˆ˜์—…๊ณ„ํš์„ ์งœ๋ฉด ์ œ๋Œ€๋กœ ๋œ ์„ค๊ณ„์ด์ง€๋งŒ

C, G, E, A, D, B ์ˆœ์„œ๋กœ ์งฐ๋‹ค๋ฉด ์ž˜ ๋ชป ์„ค๊ณ„๋œ ์ˆ˜์—…๊ณ„ํš์ด ๋ฉ๋‹ˆ๋‹ค.

 

์ˆ˜์—…๊ณ„ํš์€ ๊ทธ ์ˆœ์„œ๋Œ€๋กœ ์•ž์— ์ˆ˜์—…์ด ์ด์ˆ˜๋˜๋ฉด ๋‹ค์Œ ์ˆ˜์—…์„ ์‹œ์ž‘ํ•˜๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์—…๊ณ„ํš์„œ์ƒ์˜ ๊ฐ ๊ณผ๋ชฉ์€ ๋ฌด์กฐ๊ฑด ์ด์ˆ˜๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜๊ณผ๋ชฉ์ˆœ์„œ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํ˜„์ˆ˜๊ฐ€ ์ง  N๊ฐœ์˜ ์ˆ˜์—…์„ค๊ณ„๊ฐ€ ์ž˜๋œ ๊ฒƒ์ด๋ฉด “YES", ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ฉด ”NO“๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

 

์ž…๋ ฅ

์ฒซ ์ค„์— ํ•œ ์ค„์— ํ•„์ˆ˜๊ณผ๋ชฉ์˜ ์ˆœ์„œ๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณผ๋ชฉ์€ ์˜๋ฌธ ๋Œ€๋ฌธ์ž์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ ์งธ ์ค„๋ถ€ํ„ฐ ํ˜„์ˆ˜๊ฐ€ ์ง  ์ˆ˜์—…์„ค๊ณ„๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.(์ˆ˜์—…์„ค๊ณ„์˜ ๊ธธ์ด๋Š” 30์ดํ•˜์ด๋‹ค)

 

์ถœ๋ ฅ

์ฒซ ์ค„์— ์ˆ˜์—…์„ค๊ณ„๊ฐ€ ์ž˜๋œ ๊ฒƒ์ด๋ฉด “YES", ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ฉด ”NO“๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

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

CBA
CBDAGE

 

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

YES

 

 

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

public String solution(String sub, String design)
{
   Queue<Character> queue = new LinkedList<>();
   
   for (char c : design.toCharArray())
   {
      queue.add(c);
   }
   
   String tmp = "";
   for (Character character : queue)
   {
      for (char c : sub.toCharArray())
      {
         if (character == c) {
            tmp += character;
         }
      }
   }
   
   return tmp.equals(sub) ? "YES" : "NO";
}

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป : ์šฐ์„  ๋‚˜๋Š” ์ˆ˜์—… ์„ค๊ณ„ ๋ฌธ์ž์—ด design์ด ์ฃผ์–ด์ง€๋ฉด ์ด๋ฅผ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์„œ queue์— ๋„ฃ์–ด์ฃผ๊ณ , ๊ทธ ๋‹ค์Œ tmp ๋ฌธ์ž์—ด ํ•˜๋‚˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๊ณ , ๊ทธ ๋‹ค์Œ queue๋ฅผ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋Œ๋ฉด์„œ ํ•„์ˆ˜ ๊ณผ๋ชฉ sub์˜ ๋ฌธ์ž ๋ฐฐ์—ด๊ณผ queue์— ๋“ค์–ด๊ฐ„ ๋ฌธ์ž๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ ๋‘˜์ด ๊ฐ™์œผ๋ฉด tmp ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€๋ฅผ ํ•ด์ฃผ๊ณ , ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ tmp ๋ฌธ์ž์—ด์ด sub์ด๋ž‘ ๊ฐ™์œผ๋ฉด ํ•„์ˆ˜ ๊ณผ๋ชฉ์„ ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์„œ ๊ฐ™๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ YES๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ  ์•„๋‹ˆ๋ฉด NO๋ฅผ ๋ฆฌํ„ดํ•˜๋„๋ก ํ–ˆ๋‹ค. 

 

C, B, D, A, G, E ์ด ์ˆ˜์—… ์„ค๊ณ„์˜ tmp๋Š” CBA์ด๋ฏ€๋กœ sub๋ž‘ ๊ฐ™์•„์„œ YES๋ฅผ ๋ฆฌํ„ดํ•˜์ง€๋งŒ, 

C, G, E, A, D, B ์ด ์ˆ˜์—… ์„ค๊ณ„์˜ tmp๋Š” CAB์ด๋ฏ€๋กœ sub์ด๋ž‘ ๋‹ฌ๋ผ์„œ NO๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

 

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

public String solution2(String need,String plan) {
   String answer = "YES";
   Queue<Character> queue = new LinkedList<>();

   for (char c : need.toCharArray()) {
      queue.offer(c); // ํ•„์ˆ˜ ๊ณผ๋ชฉ ์„ธํŒ…
   }

   for (char c : plan.toCharArray()) {
      if (queue.contains(c)) {
         if (c != queue.poll()) {
            return "NO";
         }
      }
   }

   if (!queue.isEmpty()) {
      return "NO";
   }

   return answer;
}

๐Ÿ‘พ : ๊ฐ•์‚ฌ๋‹˜์€ ์šฐ์„  answer๋ฅผ YES๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ฃผ์–ด์ง„ ํ•„์ˆ˜ ๊ณผ๋ชฉ need๋ฅผ Queue์— ๋„ฃ์–ด์คฌ๋‹ค. 

๊ทธ ๋‹ค์Œ, ์ง  ์ˆ˜์—… ์„ค๊ณ„ ๋ฌธ์ž์—ด plan์„ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ๋ฌธ์ž c ๊ฐ€ queue์— ๋“ค์–ด์žˆ๋Š”์ง€ contains ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ queue์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฑด ํ•„์ˆ˜ ๊ณผ๋ชฉ์ด๋ผ๋Š” ๊ฒƒ์ด๊ณ , ๊ทธ ๋ฌธ์ž c๊ฐ€ queue์—์„œ poll ํ•ด์„œ ๊บผ๋‚ธ ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด ๊ณ„์† ๋ฐ˜๋ณต๋ฌธ์„ ์ง„ํ–‰ํ•˜๋ฉด ๋˜์ง€๋งŒ, ๋งŒ์•ฝ ๋‹ค๋ฅด๋ฉด ํ•„์ˆ˜ ๊ณผ๋ชฉ ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜์—…์„ ์„ค๊ณ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ NO๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ค ๋Œ๊ณ  ๋‚˜์„œ ๋งŒ์•ฝ queue๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ ํ•„์ˆ˜ ๊ณผ๋ชฉ์„ ๋ชจ๋‘ ํฌํ•จํ•ด์„œ ์ˆ˜์—…์„ ์„ค๊ณ„ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— return "NO"๋ฅผ ํ•ด์ฃผ๊ณ , queue๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด YES ๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

 

728x90