Deep_Dev
article thumbnail

1. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

2. ๊ด„ํ˜ธ๋ฌธ์ž์ œ๊ฑฐ

3. ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ(์นด์นด์˜ค)

4. ํ›„์œ„์‹ ์—ฐ์‚ฐ(postfix)

5. ์‡ ๋ง‰๋Œ€๊ธฐ

6. ๊ณต์ฃผ๊ตฌํ•˜๊ธฐ

7. ๊ต์œก๊ณผ์ •์„ค๊ณ„

8. ์‘๊ธ‰์‹ค


1. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

 

import java.util.*;
public class Main {
    public String solution(String str){
       String answer="YES";
       Stack<Character> stack=new Stack<>();
        for(char x:str.toCharArray()){ // ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋งŽ์„๋•Œ
           if(x=='(') stack.push(x);
           else{ // ๋‹ซ๋Š” ๊ด„ํ˜ธ ์ผ๋•Œ
               if(stack.isEmpty()) return "NO";// stack์ด ๋น„์–ด์žˆ๋ƒ => "NO"
               stack.pop(); // ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ œ์ผ ์ƒ๋‹จ์— ์žˆ๋Š”๊ฒƒ ์ œ๊ฑฐ
           }
       }
       if(!stack.isEmpty()) // ์•„์ง ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด
           return "NO";
       return answer;
    }
    public static void main(String[] args) {
       Main T=new Main();
       Scanner kb=new Scanner(System.in);
       String str=kb.next();
       System.out.print(T.solution(str));
    }
}

 

 

 

2. ๊ด„ํ˜ธ๋ฌธ์ž์ œ๊ฑฐ

 

 

 

 

import java.util.*;
public class Main {
    public String solution(String str){
       String answer="";
       Stack<Character> stack=new Stack<>();
       for(char x : str.toCharArray()){
           if(x==')'){ // ๋‹ซ๋Š”๊ด„ํ˜ธ๋ฉด
               while(stack.pop()!='('); // ์—ฌ๋Š” ๊ด„ํ˜ธ ์•„๋‹๋•Œ๊นŒ์ง€ pop
           }
           else // ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ฉด push
               stack.push(x);
       }
       for(int i=0; i<stack.size(); i++)
           answer+=stack.get(i);
        return answer;
    }
    public static void main(String[] args) {
       Main T=new Main();
       Scanner kb=new Scanner(System.in);
       String str=kb.nextLine();
       System.out.print(T.solution(str));
    }
}

 

 

 

3. ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ(์นด์นด์˜ค)

 

 

์„ค๋ช…

๊ฒŒ์ž„๊ฐœ๋ฐœ์ž์ธ ์ฃ ๋ฅด๋””๋Š” ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ธฐ๊ณ„๋ฅผ ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„์œผ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฃ ๋ฅด๋””๋Š” ๊ฒŒ์ž„์˜ ์žฌ๋ฏธ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ™”๋ฉด ๊ตฌ์„ฑ๊ณผ ๊ทœ์น™์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒŒ์ž„ ๋กœ์ง์— ๋ฐ˜์˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ํ™”๋ฉด์€ 1 x 1 ํฌ๊ธฐ์˜ ์นธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ N x N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐ ๊ฒฉ์ž์ด๋ฉฐ ์œ„์ชฝ์—๋Š” ํฌ๋ ˆ์ธ์ด ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

(์œ„ ๊ทธ๋ฆผ์€ 5 x 5 ํฌ๊ธฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค). ๊ฐ ๊ฒฉ์ž ์นธ์—๋Š” ๋‹ค์–‘ํ•œ ์ธํ˜•์ด ๋“ค์–ด ์žˆ์œผ๋ฉฐ ์ธํ˜•์ด ์—†๋Š” ์นธ์€ ๋นˆ์นธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์ธํ˜•์€ 1 x 1 ํฌ๊ธฐ์˜ ๊ฒฉ์ž ํ•œ ์นธ์„ ์ฐจ์ง€ํ•˜๋ฉฐ ๊ฒฉ์ž์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ์‚ฌ์šฉ์ž๋Š” ํฌ๋ ˆ์ธ์„ ์ขŒ์šฐ๋กœ ์›€์ง์—ฌ์„œ ๋ฉˆ์ถ˜ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง‘์–ด ์˜ฌ๋ฆฐ ์ธํ˜•์€ ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์ด๊ฒŒ ๋˜๋Š” ๋ฐ,

์ด๋•Œ ๋ฐ”๊ตฌ๋‹ˆ์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ธํ˜•์ด ์ˆœ์„œ๋Œ€๋กœ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ทธ๋ฆผ์€ [1๋ฒˆ, 5๋ฒˆ, 3๋ฒˆ] ์œ„์น˜์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ ค ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ๋ฐ”๊ตฌ๋‹ˆ์— ์—ฐ์†ํ•ด์„œ ์Œ“์ด๊ฒŒ ๋˜๋ฉด ๋‘ ์ธํ˜•์€ ํ„ฐ๋œจ๋ ค์ง€๋ฉด์„œ ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์œ„ ์ƒํƒœ์—์„œ ์ด์–ด์„œ [5๋ฒˆ] ์œ„์น˜์—์„œ ์ธํ˜•์„ ์ง‘์–ด ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์œผ๋ฉด ๊ฐ™์€ ๋ชจ์–‘ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.

ํฌ๋ ˆ์ธ ์ž‘๋™ ์‹œ ์ธํ˜•์ด ์ง‘์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ์—†์œผ๋‚˜ ๋งŒ์•ฝ ์ธํ˜•์ด ์—†๋Š” ๊ณณ์—์„œ ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด๋Ÿฐ ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฐ”๊ตฌ๋‹ˆ๋Š” ๋ชจ๋“  ์ธํ˜•์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํฌ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆผ์—์„œ๋Š” ํ™”๋ฉดํ‘œ์‹œ ์ œ์•ฝ์œผ๋กœ 5์นธ๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜์˜€์Œ)

๊ฒŒ์ž„ ํ™”๋ฉด์˜ ๊ฒฉ์ž์˜ ์ƒํƒœ๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด board์™€ ์ธํ˜•์„ ์ง‘๊ธฐ ์œ„ํ•ด ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚จ ์œ„์น˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด moves๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,

ํฌ๋ ˆ์ธ์„ ๋ชจ๋‘ ์ž‘๋™์‹œํ‚จ ํ›„ ํ„ฐํŠธ๋ ค์ ธ ์‚ฌ๋ผ์ง„ ์ธํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

 

์ž…๋ ฅ 

์ฒซ ์ค„์— ์ž์—ฐ์ˆ˜ N(5<=N<=30)์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ N*N board ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

board์˜ ๊ฐ ์นธ์—๋Š” 0 ์ด์ƒ 100 ์ดํ•˜์ธ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.

0์€ ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

1 ~ 100์˜ ๊ฐ ์ˆซ์ž๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ธํ˜•์˜ ๋ชจ์–‘์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ฐ™์€ ์ˆซ์ž๋Š” ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

board๋ฐฐ์—ด์ด ๋๋‚œ ๋‹ค์Œ์ค„์— moves ๋ฐฐ์—ด์˜ ๊ธธ์ด M์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ์ค„์—๋Š” moves ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

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

moves ๋ฐฐ์—ด ๊ฐ ์›์†Œ๋“ค์˜ ๊ฐ’์€ 1 ์ด์ƒ์ด๋ฉฐ board ๋ฐฐ์—ด์˜ ๊ฐ€๋กœ ํฌ๊ธฐ ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

์ถœ๋ ฅ 

์ฒซ ์ค„์— ํ„ฐํŠธ๋ ค์ ธ ์‚ฌ๋ผ์ง„ ์ธํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

 

 

import java.util.*;
public class Main {
    public int solution(int[][] board, int[] moves){
        int answer=0;
        Stack<Integer> stack=new Stack<>();
        for(int pos : moves){ // pos = ํฌ๋ ˆ์ธ ์œ„์น˜
            for(int i=0; i<board.length; i++){// board.length : ํ–‰ํฌ๊ธฐ
                if(board[i][pos-1]!=0) { // ์ธํ˜•๋ฐœ๊ฒฌ
                    int tmp = board[i][pos - 1]; // tmp์— ์ธํ˜• ์ž„์‹œ๋ณด๊ด€
                    board[i][pos-1]=0; // ์ธํ˜•์ž๋ฆฌ์— 0
                    if(!stack.isEmpty() && tmp==stack.peek()) { // stack์ด ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด์„œ ์ œ์ผ ์ƒ๋‹จ๊ณผ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด
                        answer += 2;
                        stack.pop(); // ์ƒ๋‹จ ์ œ๊ฑฐ
                    }else stack.push(tmp);
                    break;
                }
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        Main T=new Main();
        Scanner kb=new Scanner(System.in);
        int n=kb.nextInt();
        int[][] board=new int[n][n];
       for(int i=0; i<n; i++){
           for(int j=0; j<n; j++){
               board[i][j]=kb.nextInt();
           }
       }
       int m=kb.nextInt();
       int[] moves=new int[m];
       for(int i=0; i<m; i++) moves[i]=kb.nextInt();
       System.out.println(T.solution(board,moves));
    }
}

 

 

4. ํ›„์œ„์‹ ์—ฐ์‚ฐ(postfix)

 

 

 

import java.util.*;
public class Main {
    public int solution(String str){
        int answer=0;
        Stack<Integer> stack=new Stack<>();
        for(char x: str.toCharArray()){
            if(Character.isDigit(x)) stack.push(x-48); // ์•„์Šคํ‚ค 
            else{ // ์—ฐ์‚ฐ์ž๋ผ๋ฉด
                int rt=stack.pop();
                int lt=stack.pop();
                if(x=='+') stack.push(lt+rt);
                else if(x=='-') stack.push(lt-rt);
                else if(x=='*') stack.push(lt*rt);
                else if(x=='/') stack.push(lt/rt);
            }
        }
        answer=stack.get(0); // 0 ๋ฒˆ์— ์žˆ๋Š”๊ฑฐ return
        return answer;
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        String str=kb.next();
        System.out.println(T.solution(str));
    }
}

 

 

 

5. ์‡ ๋ง‰๋Œ€๊ธฐ

์„ค๋ช…

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๋ ˆ์ด์ €๋กœ ์ ˆ๋‹จํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํšจ์œจ์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด์„œ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์•„๋ž˜์—์„œ ์œ„๋กœ ๊ฒน์ณ ๋†“๊ณ ,

๋ ˆ์ด์ €๋ฅผ ์œ„์—์„œ ์ˆ˜์ง์œผ๋กœ ๋ฐœ์‚ฌํ•˜์—ฌ ์‡ ๋ง‰๋Œ€๊ธฐ๋“ค์„ ์ž๋ฅธ๋‹ค. ์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋Š” ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค.

• ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ์ž์‹ ๋ณด๋‹ค ๊ธด ์‡ ๋ง‰๋Œ€๊ธฐ ์œ„์—๋งŒ ๋†“์ผ ์ˆ˜ ์žˆ๋‹ค. - ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๋‹ค๋ฅธ ์‡ ๋ง‰๋Œ€๊ธฐ ์œ„์— ๋†“๋Š” ๊ฒฝ์šฐ ์™„์ „ํžˆ ํฌํ•จ๋˜๋„๋ก ๋†“๋˜,

๋์ ์€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ๋†“๋Š”๋‹ค.

• ๊ฐ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ž๋ฅด๋Š” ๋ ˆ์ด์ €๋Š” ์ ์–ด๋„ ํ•˜๋‚˜ ์กด์žฌํ•œ๋‹ค.

• ๋ ˆ์ด์ €๋Š” ์–ด๋–ค ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ์–‘ ๋์ ๊ณผ๋„ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์ˆ˜ํ‰์œผ๋กœ ๊ทธ๋ ค์ง„ ๊ตต์€ ์‹ค์„ ์€ ์‡ ๋ง‰๋Œ€๊ธฐ์ด๊ณ , ์ ์€ ๋ ˆ์ด์ €์˜ ์œ„์น˜,

์ˆ˜์ง์œผ๋กœ ๊ทธ๋ ค์ง„ ์ ์„  ํ™”์‚ดํ‘œ๋Š” ๋ ˆ์ด์ €์˜ ๋ฐœ์‚ฌ ๋ฐฉํ–ฅ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ ˆ์ด์ €์™€ ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๋ฐฐ์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๋ ˆ์ด์ €๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ์˜ ์ธ์ ‘ํ•œ ์Œ ‘( ) ’ ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ‘( ) ’๋Š” ๋ฐ˜ ๋“œ์‹œ ๋ ˆ์ด์ €๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

2. ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ์™ผ์ชฝ ๋์€ ์—ฌ๋Š” ๊ด„ํ˜ธ ‘ ( ’ ๋กœ, ์˜ค๋ฅธ์ชฝ ๋์€ ๋‹ซํžŒ ๊ด„ํ˜ธ ‘) ’ ๋กœ ํ‘œํ˜„๋œ๋‹ค.

์œ„ ์˜ˆ์˜ ๊ด„ํ˜ธ ํ‘œํ˜„์€ ๊ทธ๋ฆผ ์œ„์— ์ฃผ์–ด์ ธ ์žˆ๋‹ค.

์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ๋ ˆ์ด์ €์— ์˜ํ•ด ๋ช‡ ๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง€๋Š”๋ฐ, ์œ„ ์˜ˆ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ๊ฐ๊ฐ 3๊ฐœ์™€ 2๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง€๊ณ ,

์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฃผ์–ด์ง„ ์‡ ๋ง‰๋Œ€๊ธฐ๋“ค์€ ์ด 17๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง„๋‹ค.

์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ ํ‘œํ˜„์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ž˜๋ ค์ง„ ์‡ ๋ง‰๋Œ€๊ธฐ ์กฐ๊ฐ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ 

ํ•œ ์ค„์— ์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ ํ‘œํ˜„์ด ๊ณต๋ฐฑ์—†์ด ์ฃผ์–ด์ง„๋‹ค. ๊ด„ํ˜ธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 100,000์ด๋‹ค.

์ถœ๋ ฅ 

 

 

 

 

import java.util.*;
public class Main {
    public int solution(String s){
        int answer=0;
        Stack<Character> stack=new Stack<>();
        for(int i=0; i<s.length(); i++){ // for each ๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด index์ ‘๊ทผ์ด ์กฐ๊ธˆ ๊ณค๋ž€
            if(s.charAt(i)=='(') stack.push(s.charAt(i));
            else{ // ๋‹ซ๋Š”๊ด„ํ˜ธ๋ฉด
                stack.pop();
                if(s.charAt(i-1)=='(') answer+=stack.size(); // ์ด์ „ index=( ๋ฉด ๋ ˆ์ด์ €
                else answer++; // ๋์ง€์  ๋‹ซ๋Š”๊ด„ํ˜ธ๋ผ๋ฉด +1
            }
        }
        return answer;
    }
    public static void main(String[] args) {
            Main T=new Main();
            Scanner kb=new Scanner(System.in);
            String s=kb.next();
            System.out.println(T.solution(s));
        }
    }

 

 

6. ๊ณต์ฃผ๊ตฌํ•˜๊ธฐ

 

์„ค๋ช…

์ •๋ณด ์™•๊ตญ์˜ ์ด์›ƒ ๋‚˜๋ผ ์™ธ๋™๋”ธ ๊ณต์ฃผ๊ฐ€ ์ˆฒ์†์˜ ๊ดด๋ฌผ์—๊ฒŒ ์žกํ˜€๊ฐ”์Šต๋‹ˆ๋‹ค.

์ •๋ณด ์™•๊ตญ์—๋Š” ์™•์ž๊ฐ€ N๋ช…์ด ์žˆ๋Š”๋ฐ ์„œ๋กœ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐ€๊ฒ ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ณด์™•๊ตญ์˜ ์™•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐˆ ์™•์ž๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์™•์€ ์™•์ž๋“ค์„ ๋‚˜์ด ์ˆœ์œผ๋กœ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ์ฐจ๋ก€๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธด๋‹ค.

๊ทธ๋ฆฌ๊ณ  1๋ฒˆ ์™•์ž๋ถ€ํ„ฐ N๋ฒˆ ์™•์ž๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉฐ ๋™๊ทธ๋ž—๊ฒŒ ์•‰๊ฒŒ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  1๋ฒˆ ์™•์ž๋ถ€ํ„ฐ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉฐ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ฒˆํ˜ธ๋ฅผ ์™ธ์น˜๊ฒŒ ํ•œ๋‹ค.

ํ•œ ์™•์ž๊ฐ€ K(ํŠน์ •์ˆซ์ž)๋ฅผ ์™ธ์น˜๋ฉด ๊ทธ ์™•์ž๋Š” ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐ€๋Š”๋ฐ์„œ ์ œ์™ธ๋˜๊ณ  ์› ๋ฐ–์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ์™•์ž๋ถ€ํ„ฐ ๋‹ค์‹œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ฒˆํ˜ธ๋ฅผ ์™ธ์นœ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋‚จ์€ ์™•์ž๊ฐ€ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด 8๋ช…์˜ ์™•์ž๊ฐ€ ์žˆ๊ณ , 3์„ ์™ธ์นœ ์™•์ž๊ฐ€ ์ œ์™ธ๋œ๋‹ค๊ณ  ํ•˜์ž. ์ฒ˜์Œ์—๋Š” 3๋ฒˆ ์™•์ž๊ฐ€ 3์„ ์™ธ์ณ ์ œ์™ธ๋œ๋‹ค.

์ด์–ด 6, 1, 5, 2, 8, 4๋ฒˆ ์™•์ž๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ œ์™ธ๋˜๊ณ  ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋‚จ๊ฒŒ ๋œ 7๋ฒˆ ์™•์ž์—๊ฒŒ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ๊ฐ‘๋‹ˆ๋‹ค.

N๊ณผ K๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๊ณต์ฃผ๋ฅผ ๊ตฌํ•˜๋Ÿฌ ๊ฐˆ ์™•์ž์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ 

์ฒซ ์ค„์— ์ž์—ฐ์ˆ˜ N(5<=N<=1,000)๊ณผ K(2<=K<=9)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ 

 

 

 

import java.util.*;

public class Main {
    public int solution(int n, int k){
        int answer=0;
        Queue<Integer> Q = new LinkedList<>();
        for(int i=1; i<=n; i++){
            Q.offer(i);
        }
        while(!Q.isEmpty()){
            for(int i=1; i<k; i++)
                Q.offer(Q.poll()); // ๊บผ๋‚ธ ์ œ์ผ ์•ž์˜ ๊ฐ’์„ ๋งจ๋’ค๋กœ
            Q.poll(); // ์ œ๊ฑฐ
            if(Q.size()==1)
                answer=Q.poll();
        }
        return answer;
    }
    public static void main(String[] args) {
        Main T=new Main();
        Scanner kb = new Scanner(System.in);
        int n=kb.nextInt();
        int k=kb.nextInt();
        System.out.println(T.solution(n,k));
    }
}

 

 

 

7. ๊ต์œก๊ณผ์ •์„ค๊ณ„

 

 

import java.util.*;

class Main {
    public String solution(String s, String str) {
        String answer="YES";
        Queue<Character> Q=new LinkedList<>();
        // ์ž…๋ ฅ๋ฐ›์€ ํ•„์ˆ˜๋ชฉ s๋ฅผ Q์— ์ˆœ์„œ๋Œ€๋กœ ์ถ”๊ฐ€
        for(char x : s.toCharArray()){
            Q.offer(x);
        }
        // ๊ณ„ํšํ•œ ๊ณผ๋ชฉ์„ ์ˆœ์„œ๋Œ€๋กœ ํŒ๋ณ„
        for(char x : str.toCharArray()){
            if(Q.contains(x)){ // Q ์•ˆ์— ํ•ด๋‹น ๊ณผ๋ชฉ์ด ์žˆ๋Š”๋ฐ (= ํ•„์ˆ˜๊ณผ๋ชฉ์ด๋‹ค)
               if(x!=Q.poll()) return "NO"; // ๊ทผ๋ฐ ์ฒซ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด "NO"๋ฆฌํ„ด
            }
        }
        if(!Q.isEmpty()) return "NO"; // ๋น„์–ด์žˆ์ง€์•Š์œผ๋ฉด(ํ•„์ˆ˜๊ณผ๋ชฉ ๋“ฃ์ง€์•Š์Œ) "NO"๋ฆฌํ„ด
        return answer;
    }
    public static void main(String[] args) {
        Main T=new Main();
        Scanner kb = new Scanner(System.in);
        String s=kb.next();
        String str=kb.next();
        System.out.println(T.solution(s,str));
    }
}

 

 

8. ์‘๊ธ‰์‹ค

 

 

 

 

import java.util.*;
import java.util.LinkedList;
import java.io.IOException;

class Person{
    int id;
    int priority;
    public Person(int id, int priority){
        this.id=id;
        this.priority=priority;
    }
}
class Solution {
    public int solution(int n, int m, int[] arr) {
        int answer=0;
        int cnt=0;
        Queue<Person> Q=new LinkedList<>(); // Personํ˜• Q
        for(int i=0; i<n; i++){
            Q.add(new Person(i,arr[i])); // (0,60) (1,50) (2,70) ...
        }
        while(!Q.isEmpty()){
            Person tmp=Q.poll(); // tmp = 0๋ฒˆ์งธ ๊ฐ’
            for(Person x:Q){
                if(x.priority>tmp.priority){ // ํ˜„์žฌ tmp ๊ฐ’๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด
                    Q.offer(tmp); // ๋งจ๋’ค์— offer
                    tmp=null;
                    break;
                }
            }
            if(tmp!=null){ // ์šฐ์„ ์ˆœ์œ„ ๋†’์€๊ฒŒ ์—†์–ด์„œ ์ง„๋ฃŒ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
                answer++; // 1์ฆ๊ฐ€
                if(tmp.id==m) return answer;
            }
        }
        return answer;
    }
    public static void main(String[] args) throws IOException{
        Solution T=new Solution();
        Scanner kb = new Scanner(System.in);;
        int n=kb.nextInt();
        int m=kb.nextInt();
        int[] arr=new int[n];
        for(int i=0; i<n; i++){
            arr[i]=kb.nextInt();
        }
        System.out.print(T.solution(n,m,arr));
    }
}
import java.util.*;
import java.util.LinkedList;
import java.io.IOException;

class Person{
    int id;
    int priority;
    public Person(int id, int priority){
        this.id=id;
        this.priority=priority;
    }
}
class Solution {
    public int solution(int n, int m, int[] arr) {
        int answer=0;
        int cnt=0;
        Queue<Person> Q=new LinkedList<>(); // Personํ˜• Q
        for(int i=0; i<n; i++){
            Q.add(new Person(i,arr[i])); // (0,60) (1,50) (2,70) ...
        }
        while(!Q.isEmpty()){
            Person tmp=Q.poll(); // tmp = 0๋ฒˆ์งธ ๊ฐ’
            for(Person x:Q){
                if(x.priority>tmp.priority){ // ํ˜„์žฌ tmp ๊ฐ’๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด
                    Q.offer(tmp); // ๋งจ๋’ค์— offer
                    tmp=null;
                    break;
                }
            }
            if(tmp!=null){ // ์šฐ์„ ์ˆœ์œ„ ๋†’์€๊ฒŒ ์—†์–ด์„œ ์ง„๋ฃŒ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
                answer++; // 1์ฆ๊ฐ€
                if(tmp.id==m) return answer;
            }
        }
        return answer;
    }
    public static void main(String[] args) throws IOException{
        Solution T=new Solution();
        Scanner kb = new Scanner(System.in);;
        int n=kb.nextInt();
        int m=kb.nextInt();
        int[] arr=new int[n];
        for(int i=0; i<n; i++){
            arr[i]=kb.nextInt();
        }
        System.out.print(T.solution(n,m,arr));
    }
}