Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

μ‡ λ§‰λŒ€κΈ°

문제 μ„€λͺ…

μ—¬λŸ¬ 개의 μ‡ λ§‰λŒ€κΈ°λ₯Ό λ ˆμ΄μ €λ‘œ μ ˆλ‹¨ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 효율적인 μž‘μ—…μ„ μœ„ν•΄μ„œ μ‡ λ§‰λŒ€κΈ°λ₯Ό μ•„λž˜μ—μ„œ μœ„λ‘œ 겹쳐 놓고, λ ˆμ΄μ €λ₯Ό μœ„μ—μ„œ 수직으둜 λ°œμ‚¬ν•˜μ—¬ μ‡ λ§‰λŒ€κΈ°λ“€μ„ μžλ¦…λ‹ˆλ‹€. μ‡ λ§‰λŒ€κΈ°μ™€ λ ˆμ΄μ €μ˜ λ°°μΉ˜λŠ” λ‹€μŒ 쑰건을 λ§Œμ‘±ν•©λ‹ˆλ‹€.

- μ‡ λ§‰λŒ€κΈ°λŠ” μžμ‹ λ³΄λ‹€ κΈ΄ μ‡ λ§‰λŒ€κΈ° μœ„μ—λ§Œ 놓일 수 μžˆμŠ΅λ‹ˆλ‹€.
- μ‡ λ§‰λŒ€κΈ°λ₯Ό λ‹€λ₯Έ μ‡ λ§‰λŒ€κΈ° μœ„μ— λ†“λŠ” 경우 μ™„μ „νžˆ ν¬ν•¨λ˜λ„λ‘ λ†“λ˜, 끝점은 κ²ΉμΉ˜μ§€ μ•Šλ„λ‘ λ†“μŠ΅λ‹ˆλ‹€.
- 각 μ‡ λ§‰λŒ€κΈ°λ₯Ό 자λ₯΄λŠ” λ ˆμ΄μ €λŠ” 적어도 ν•˜λ‚˜ μ‘΄μž¬ν•©λ‹ˆλ‹€.
- λ ˆμ΄μ €λŠ” μ–΄λ–€ μ‡ λ§‰λŒ€κΈ°μ˜ μ–‘ 끝점과도 κ²ΉμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ•„λž˜ 그림은 μœ„ 쑰건을 λ§Œμ‘±ν•˜λŠ” 예λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. μˆ˜ν‰μœΌλ‘œ κ·Έλ €μ§„ ꡡ은 싀선은 μ‡ λ§‰λŒ€κΈ°μ΄κ³ , 점은 λ ˆμ΄μ €μ˜ μœ„μΉ˜, 수직으둜 κ·Έλ €μ§„ 점선 ν™”μ‚΄ν‘œλŠ” λ ˆμ΄μ €μ˜ λ°œμ‚¬ λ°©ν–₯μž…λ‹ˆλ‹€.

image0.png

μ΄λŸ¬ν•œ λ ˆμ΄μ €μ™€ μ‡ λ§‰λŒ€κΈ°μ˜ λ°°μΉ˜λŠ” λ‹€μŒκ³Ό 같이 κ΄„ν˜Έλ₯Ό μ΄μš©ν•˜μ—¬ μ™Όμͺ½λΆ€ν„° μˆœμ„œλŒ€λ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

(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;
    }
}