-
Java 10799 쇠막대기PS 2023. 5. 4. 14:40
풀이 :
스택을 사용해 '('가 나오면 우선 푸쉬, ')'가 나오면 이전 값이 '('인지를 체크하여 result에 값을 더 해주었습니다.
쇠막대기 하나를 레이저 두개로 자른다면 쇠막대기는 1 + 2, 총 3개가 됩니다. 쇠막대기를 뜻하는 '('가 입력되고 쇠막대기의 끝을 뜻하는 ')'가 입력될 때까지 쇠막대기는 이어지고 있으니 이전 값이 '('인 ')', 즉 레이저가 입력되면 size를 result에 더해줍니다.
그리고 쇠막대기의 끝을 알리는 ')'가 입력된다면 result에 1을 더 해줌으로써 값을 구할 수 있었습니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Stack<Integer> s = new Stack<>(); String str = br.readLine(); int result = 0; for(int i = 0; i < str.length(); i++){ if(str.charAt(i) == '('){ s.push(i); } if(str.charAt(i) == ')'){ s.pop(); if(str.charAt(i-1) == '('){ result += s.size(); }else { result++; } } } System.out.println(result); } }
'PS' 카테고리의 다른 글
Java 17299 오등큰수 (0) 2023.05.04 Java 17298 오큰수 (0) 2023.05.04 Java 10870 피보나치 수 5 (0) 2023.05.04 Java 17413 단어 뒤집기2 (0) 2023.05.04 Java 10866 덱 (0) 2023.05.04