[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ (JAVA)

2025. 2. 4. 11:33ยท๐Ÿ’ช Algorithm
๋ฐ˜์‘ํ˜•

๋งํฌ

https://school.programmers.co.kr/learn/courses/30/lessons/76502?language=java

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ ์š”์•ฝ

๋ฌธ์ž์—ด s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ธ์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ

 

์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์˜ ์ •์˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • (), [], {}๋Š” ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, (A), [A], {A} ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A, B๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, AB ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.'

 

์ œํ•œ

  • s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

ํ’€์ด

์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด ์ •์˜์— ๋”ฐ๋ผ ์†Œ๊ด„ํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 3๊ฐ€์ง€์˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ๋ฅผ ๋งŒ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. `()`
  2. `(())`
  3. `()()`

 

์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ณผ์ •์€ ์Šคํƒ์„ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. `(`๊ฐ€ ๋‚˜์˜ค๋ฉด ์Šคํƒ์— push ํ•œ๋‹ค.
  2. `)`๊ฐ€ ๋‚˜์˜ค๋ฉด ์Šคํƒ์—์„œ pop ํ•œ ๋ฌธ์ž๊ฐ€ `(` ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
    1. ์Šคํƒ์—์„œ pop์„ ํ•˜๊ธฐ ์ „์— ์ผ๋‹จ ์Šคํƒ์ด ๋น„์–ด์žˆ์ง„ ์•Š์€์ง€๋„ ํ™•์ธํ•œ๋‹ค.
  3. s์˜ ๋ฌธ์ž๋ฅผ ๋ชจ๋‘ ์ˆœํšŒํ•œ ํ›„, ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
    1. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋ผ๋ฉด ์Šคํƒ์ด ๋ชจ๋‘ ๋น„์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

์œ„ ๊ณผ์ •์„ ์ค‘๊ด„ํ˜ธ, ๋Œ€๊ด„ํ˜ธ์—๋„ ๋˜‘๊ฐ™์ด ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  s๋ฅผ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋ฉด์„œ ์ด๋ฅผ ๋งค๋ฒˆ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ตœ์ข… ์ฝ”๋“œ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. x๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  2. s๋ฅผ x๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.
  3. s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค.
  4. (x <s์˜ ๊ธธ์ด-1)์ด๋ผ๋ฉด x๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ ํ›„, 2~3 ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๊ณ ๋ฏผํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ “s๋ฅผ x๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํšŒ์ „ํ•  ๊ฒƒ์ธ๊ฐ€?”์ž…๋‹ˆ๋‹ค.

์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋ฉด, ๋ฌธ์ž์—ด ๊ธธ์ด๋Š” ๋™์ผํ•˜์ง€๋งŒ ์‹œ์ž‘์  ์ธ๋ฑ์Šค๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹œ์ž‘์  ์ธ๋ฑ์Šค๋Š” x ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๊ณต์‹์„ ์„ธ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‹œ์ž‘์  ์ธ๋ฑ์Šค: `x`
  • ๋ฌธ์ž์—ด ์† ๋ฌธ์ž๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ณ€์ˆ˜ : `i` (`0`≤`i` <`s์˜ ๊ธธ์ด`)
  • x๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ s์˜ ํŠน์ • ๋ฌธ์ž ์ธ๋ฑ์Šค: `(x+i)%(s์˜ ๊ธธ์ด)`

 

์ฝ”๋“œ

import java.util.*;
class Solution {
    public int solution(String s) {
        int cnt = 0;
        for(int x=0; x<s.length(); x++){
            if(isValid(s,x)) cnt++;            
        }         
        return cnt;
    }
    
    boolean isValid(String s, int x){
        Stack<Character> stack = new Stack<>();
        for(int i=0; i<s.length(); i++){
            char c = s.charAt((x+i)%s.length());
            if(c=='(' || c=='[' || c=='{'){
                stack.push(c);
            } else{
                if(stack.isEmpty()) return false;
                if(c==')' && stack.pop()!='(') return false;
                if(c==']' && stack.pop()!='[') return false;
                if(c=='}' && stack.pop()!='{') return false;
            }
        }
        return stack.isEmpty();
    }
}

๐Ÿท ์‹œ๊ฐ„ ๋ณต์žก๋„

  • N: s์˜ ๊ธธ์ด
  • `isValid()`: O(N)
  • solution์˜ for๋ฌธ: ์ตœ๋Œ€ N๋ฒˆ ๋ฐ˜๋ณต
  • ์ตœ์ข… ์‹œ๊ฐ„ ๋ณต์žก๋„ = O(N*N)
๋ฐ˜์‘ํ˜•

'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฃผ์‹ ๊ฐ€๊ฒฉ (JAVA)  (2) 2025.02.05
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ (JAVA)  (1) 2025.02.04
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA)  (2) 2025.02.03
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹คํŒจ์œจ (JAVA)  (1) 2025.02.02
'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฃผ์‹ ๊ฐ€๊ฒฉ (JAVA)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ (JAVA)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹คํŒจ์œจ (JAVA)
dev-heyjin
dev-heyjin
  • dev-heyjin
    ๊ฐœ๋ฐœ ๊ธฐ๋ก
    dev-heyjin
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (56)
      • ๐ŸŽฏ Programming (8)
      • ๐Ÿ’ช Algorithm (16)
      • โš™๏ธ CS (31)
        • ๋„คํŠธ์›Œํฌ (15)
        • ์šด์˜์ฒด์ œ (15)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ํ•ดํ‚น
    DB
    RDS
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
dev-heyjin
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ (JAVA)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”