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;
    }
}
λ°˜μ‘ν˜•