๊ด€๋ฆฌ ๋ฉ”๋‰ด

Binary Journey

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 2-01] ์ปจํŠธ๋กค ์ œํŠธ ๋ณธ๋ฌธ

Algorithm/ํ…Œ์ฝ”ํ…Œ์ฝ”1.5(2025)

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 2-01] ์ปจํŠธ๋กค ์ œํŠธ

binaryJournalist 2025. 2. 21. 13:21
๋ฐ˜์‘ํ˜•
๐Ÿ’กํ…Œ์ฝ”ํ…Œ์ฝ” ์‹œ์ฆŒ 1.5 2ํšŒ ๋ชจ์ž„ off-site ๋ฌธ์ œ ํ’€์ด์ž…๋‹ˆ๋‹ค. (2025.01.19)

 

๋ฌธ์ œ

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

 

๋‚ด์šฉ

 

์ˆซ์ž์™€ "Z"๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ๋‹ด๊ธด ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ "Z"๊ฐ€ ๋‚˜์˜ค๋ฉด ๋ฐ”๋กœ ์ „์— ๋”ํ–ˆ๋˜ ์ˆซ์ž๋ฅผ ๋บ€๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ˆซ์ž์™€ "Z"๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋จธ์“ฑ์ด๊ฐ€ ๊ตฌํ•œ ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

 

 

๊ธฐ๋กํ•˜๊ธฐ

๐Ÿ’ก ์–ด๋””๊นŒ์ง€ ์ƒ๊ฐํ•ด๋ดค๋Š”์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ธฐ๋กํ•ด๋ด…๋‹ˆ๋‹ค.

 

์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๋ ค ํ–ˆ๋‚˜์š”?

 

์Šคํƒ ์‚ฌ์šฉ ํ•œ๋‹ค.

 

์ ์šฉ ๊ทผ๊ฑฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

"Z"๊ฐ€ ๋‚˜์˜ค๋ฉด ๋ฐ”๋กœ ์ „์— ๋”ํ–ˆ๋˜ ์ˆซ์ž๋ฅผ ๋บ€๋‹ค๋Š” ๊ฒƒ์„ ๋ด์„œ ๋ฐ”๋กœ ์ง์ „์— ์Œ“์€ top ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ดํ•ดํ–ˆ๋‹ค.

 

๋ฌธ์ œ ํ’€์ด ๊ณผ์ •์—์„œ ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ ค ํ–ˆ๋‚˜์š”?

  • Z ๋งŒ๋‚˜๋ฉด top pop
  • stack ์˜ ๊ฐ’ ๋ชจ๋‘ ๋”ํ•˜๊ธฐ

 

ํ’€์ด

ํ’€์ด ์‹œ๊ฐ„

์‹œ์ž‘ ์‹œ๊ฐ ์ข…๋ฃŒ ์‹œ๊ฐ ์ด ์†Œ์š” ์‹œ๊ฐ„
16:13 16:22 9๋ถ„

 

 

๋ฌธ์ œ ๋ถ„์„

 

์ œ์•ฝ ์‚ฌํ•ญ ํŒŒ์•… & ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ

  • 1 ≤ s์˜ ๊ธธ์ด ≤ 200
  • -1,000 < s์˜ ์›์†Œ ์ค‘ ์ˆซ์ž < 1,000
  • s๋Š” ์ˆซ์ž, "Z", ๊ณต๋ฐฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • s์— ์žˆ๋Š” ์ˆซ์ž์™€ "Z"๋Š” ์„œ๋กœ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
  • ์—ฐ์†๋œ ๊ณต๋ฐฑ์€ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 0์„ ์ œ์™ธํ•˜๊ณ ๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • s๋Š” "Z"๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • s์˜ ์‹œ์ž‘๊ณผ ๋์—๋Š” ๊ณต๋ฐฑ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • "Z"๊ฐ€ ์—ฐ์†ํ•ด์„œ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

 

์ž…๋ ฅ๊ฐ’ ๋ถ„์„

๐Ÿ’ก ์ž…๋ ฅ๊ฐ’์„ ๋ถ„์„ํ•˜๋ฉด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 
์ž…์ถœ๋ ฅ ์˜ˆ
s result
"1 2 Z 3" 4
"10 20 30 40" 100
"10 Z 20 Z 1" 1
"10 Z 20 Z" 0
"-1 -2 -3 Z" -3
 
 
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ณธ๋ฌธ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • 10 + 20 + 30 + 40 = 100์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • "10 Z 20 Z 1"์—์„œ 10 ๋‹ค์Œ Z, 20 ๋‹ค์Œ Z๋กœ 10, 20์ด ์ง€์›Œ์ง€๊ณ  1๋งŒ ๋”ํ•˜์—ฌ 1์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

์˜์‚ฌ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋™์ž‘ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ์ˆœ์„œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธํ•ด๋ด…๋‹ˆ๋‹ค.

solution() {
    // 1. ์Šคํƒ ์ƒ์„ฑ
    // 2. String s split
    // 3. for ๋ฌธ
    for (s) {
        // 4. z ๋งŒ๋‚˜๋ฉด pop()
    }
    return stack์˜ ํ•ฉ
}

 

 

๊ตฌํ˜„

import java.util.Stack;
class Solution {
    public int solution(String s) {
        Stack<Integer> stack = new Stack<>();
        String[] array = s.split(" ");
        for (String a : array) {
            if (a.equals("Z")) {
                if (!stack.isEmpty()) stack.pop();
            } else {
                stack.push(Integer.parseInt(a));
            }
        }

        int answer = 0;
        while (!stack.isEmpty()) {
            answer += stack.pop();
        }
        return answer;
    }
}
๋ฐ˜์‘ํ˜•