본문 바로가기
CS/Algorithm

[알고리즘] 10799 쇠막대기

by 별토끼. 2018. 3. 8.
반응형

[알고리즘] 10799 쇠막대기

 

https://www.acmicpc.net/problem/10799

 

 

[풀이]

  • (가 나올 경우 count값을 1 증가
  • ) 가 나올 경우
    1. 앞이 ( 일 경우 - 레이저
      • stack에 들어있는 (를 하나 지우고 stack 전체값을 result값에 더한다 
    2. 앞이 ) 일 경우 - 막대
      • stack에 들어있는 (를 하나 지우고 result값에 +1한다.

 

 

 

[코드]

package algorithm_basic;
 
import java.util.Scanner;
import java.util.Stack;
 
public class q_10799 {
 
    public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);
        String line = scan.nextLine();
        line.trim();
        
        System.out.println(result(line));
    }
    
    public static int result(String line) {
        //Stack<String> stack = new Stack<>();
        int cnt=0;
        int stick_cnt=0;
        for(int i=0;i<line.length();i++) {
            char letter = line.charAt(i);
            String apb = String.valueOf(letter);
            if(apb.equals("(")) {
                cnt++;
            }else if (apb.equals(")")) {
                //레이저일 경우
                if(String.valueOf(line.charAt(i-1)).equals("(")) {
                    cnt--;
                    stick_cnt=stick_cnt+cnt;
                //막대일 경우    
                }else {
                    cnt--;
                    stick_cnt++;
                }
            }
        }
        return stick_cnt;
    }
 
}

 

반응형

'CS > Algorithm' 카테고리의 다른 글

[알고리즘] 10845 큐  (0) 2018.03.12
[알고리즘] 1406 에디터  (0) 2018.03.10
[알고리즘] 9012 괄호  (0) 2018.03.08
[BFS] 백준 2606 바이러스  (0) 2018.01.14
[알고리즘] for문 이용하기2  (0) 2017.10.21

댓글