Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 24039
  • 백준 1495
  • 백준 8892
  • 백준 16926
  • 백준 7662
  • 백준 2467
  • 백준 6550
  • 백준 12871
  • 백준 1064
  • 백준 10709
  • 백준 15312
  • 백준 7567
  • 백준 1914
  • 백준 1531
  • 백준 4659
  • 백준 15961
  • Java
  • 백준 1011
  • 백준 3049
  • 백준 14582
  • 백준 15655
  • 백준 2343
  • 자바
  • 백준 2225
  • 백준 2591
  • 백준 1747
  • 백준 3135
  • 백준 12605
  • 백준
  • 백준 16194
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 10799 쇠막대기(Java)
백준

백준 10799 쇠막대기(Java)

2023. 2. 7. 13:41

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

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 Stack을 활용하는 문제입니다. 먼저 ' ( '을 만나면 stack에 저장합니다. 그다음 ' ) '을 만났을 때 앞의 것이 ' ) '이면 자투리 막대기이므로 count++을 해줍니다. ' ( '인경우에는 레이저 이므로 스택의 내용을 count에 더해줍니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.Stack;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    Stack<Character> stack = new Stack<>();

    int count = 0;
    String str = sc.next();

    for(int i = 0; i < str.length() ; i++) {
      if(str.charAt(i) == '(') stack.push('(');
      else {
        if(str.charAt(i - 1) == ')') {
          stack.pop();
          count++;
        }
        else {
          stack.pop();
          count += stack.size();
        }
      }
    }
       
    System.out.println(count);
  }
}

'백준' 카테고리의 다른 글

백준 6603 로또(Java)  (0) 2023.02.07
백준 1182 부분수열의 합(Java)  (0) 2023.02.07
백준 4963 섬의 개수(Java)  (0) 2023.02.07
백준 11279 최대 힙(Java)  (0) 2023.02.07
백준 14889 스타트와 링크(Java)  (0) 2023.02.07
    '백준' 카테고리의 다른 글
    • 백준 6603 로또(Java)
    • 백준 1182 부분수열의 합(Java)
    • 백준 4963 섬의 개수(Java)
    • 백준 11279 최대 힙(Java)
    Park DJ
    Park DJ

    티스토리툴바