μ¬λ¬ κ°μ μ λ§λκΈ°λ₯Ό λ μ΄μ λ‘ μ λ¨νλ €κ³ ν©λλ€. ν¨μ¨μ μΈ μμ μ μν΄μ μ λ§λκΈ°λ₯Ό μλμμ μλ‘ κ²Ήμ³ λκ³ , λ μ΄μ λ₯Ό μμμ μμ§μΌλ‘ λ°μ¬νμ¬ μ λ§λκΈ°λ€μ μλ¦ λλ€. μ λ§λκΈ°μ λ μ΄μ μ λ°°μΉλ λ€μ 쑰건μ λ§μ‘±ν©λλ€.
- μ λ§λκΈ°λ μμ λ³΄λ€ κΈ΄ μ λ§λκΈ° μμλ§ λμΌ μ μμ΅λλ€.
- μ λ§λκΈ°λ₯Ό λ€λ₯Έ μ λ§λκΈ° μμ λλ κ²½μ° μμ ν ν¬ν¨λλλ‘ λλ, λμ μ κ²ΉμΉμ§ μλλ‘ λμ΅λλ€.
- κ° μ λ§λκΈ°λ₯Ό μλ₯΄λ λ μ΄μ λ μ μ΄λ νλ μ‘΄μ¬ν©λλ€.
- λ μ΄μ λ μ΄λ€ μ λ§λκΈ°μ μ λμ κ³Όλ κ²ΉμΉμ§ μμ΅λλ€.
μλ κ·Έλ¦Όμ μ 쑰건μ λ§μ‘±νλ μλ₯Ό 보μ¬μ€λλ€. μνμΌλ‘ κ·Έλ €μ§ κ΅΅μ μ€μ μ μ λ§λκΈ°μ΄κ³ , μ μ λ μ΄μ μ μμΉ, μμ§μΌλ‘ κ·Έλ €μ§ μ μ νμ΄νλ λ μ΄μ μ λ°μ¬ λ°©ν₯μ λλ€.
μ΄λ¬ν λ μ΄μ μ μ λ§λκΈ°μ λ°°μΉλ λ€μκ³Ό κ°μ΄ κ΄νΈλ₯Ό μ΄μ©νμ¬ μΌμͺ½λΆν° μμλλ‘ ννν μ μμ΅λλ€.
(a) λ μ΄μ λ μ¬λ κ΄νΈμ λ«λ κ΄νΈμ μΈμ ν μ '()'μΌλ‘ ννν©λλ€. λν λͺ¨λ '()'λ λ°λμ λ μ΄μ λ₯Ό ννν©λλ€.
(b) μ λ§λκΈ°μ μΌμͺ½ λμ μ¬λ κ΄νΈ '('λ‘, μ€λ₯Έμͺ½ λμ λ«ν κ΄νΈ ')'λ‘ ννλ©λλ€.
μ μμ κ΄νΈ ννμ κ·Έλ¦Ό μμ μ£Όμ΄μ Έ μμ΅λλ€. μ λ§λκΈ°λ λ μ΄μ μ μν΄ λͺ κ°μ μ‘°κ°μΌλ‘ μ리λλ°, μ μμμ κ°μ₯ μμ μλ λ κ°μ μ λ§λκΈ°λ κ°κ° 3κ°μ 2κ°μ μ‘°κ°μΌλ‘ μλ¦¬κ³ , μ΄μ κ°μ λ°©μμΌλ‘ μ£Όμ΄μ§ μ λ§λκΈ°λ€μ μ΄ 17κ°μ μ‘°κ°μΌλ‘ μ립λλ€.
μ λ§λκΈ°μ λ μ΄μ μ λ°°μΉλ₯Ό ννν λ¬Έμμ΄ arrangementκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μλ¦° μ λ§λκΈ° μ‘°κ°μ μ΄ κ°μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
- arrangementμ κΈΈμ΄λ μ΅λ 100,000μ λλ€.
- arrangementμ μ¬λ κ΄νΈμ λ«λ κ΄νΈλ νμ μμ μ΄λ£Ήλλ€.
| arrangement | return |
|---|---|
| ()(((()())(())()))(()) | 17 |
class Solution {
public int solution(String arrangement) {
int answer = 0;
int stack = 0;
for (int i = 0; i < arrangement.length(); i++) {
if (arrangement.charAt(i) == ')' && arrangement.charAt(i - 1) == '(') {
stack--;
answer += stack;
} else if (arrangement.charAt(i) == ')') {
stack--;
answer++;
} else if (arrangement.charAt(i) == '(') {
stack++;
}
}
return answer;
}
}