10799. 쇠막대기
https://www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
📌문제

- 예제1
📝입력
()(((()())(())()))(())
💻출력
17
📌풀이
180ms 16472kb
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));
String str = br.readLine();
int answer = 0;
char beforeChar = ' ';
Stack<Character> stack = new Stack<>();
for(char c : str.toCharArray()){
if(c == ')'){
// 막대기 끝나는 구간
if(!stack.isEmpty() && beforeChar == ')'){
answer++;
stack.pop();
} // 막대기 잘라내는 구간
else{
stack.pop();
answer += stack.size();
}
}// 막대기 시작
else stack.push(c);
beforeChar = c;
}
System.out.print(answer);
}
}
풀이법은 어렵지 않다. 이전문자를 저장후, "()" 쇠막대기를 자르는 괄호 표시가 이어졌다면 stack.size를 결과값에 더하고 "))" 닫는 괄호가 연달아 나타났다면 막대기가 끝나는 지점이기 때문에 다는 괄호 수만큼 1씩 더해주면 된다. 막대기가 시작하는 부분인 여는 괄호가 있다면 stack에 그대로 넣어주면 된다.

'Algorithm > PTUStudy' 카테고리의 다른 글
11주차. 오등큰수 (0) | 2023.04.06 |
---|---|
10주차. 오큰수 (0) | 2023.03.30 |
10주차. 데크, 우선순위(k개 정렬 리스트 병합) (0) | 2023.03.30 |
10주차. 데크, 우선순위 큐(원형 데크 디자인) (0) | 2023.03.30 |
9주차. 스택, 큐(원형 큐 디자인) (0) | 2023.03.30 |
10799. 쇠막대기
https://www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
📌문제

- 예제1
📝입력
()(((()())(())()))(())
💻출력
17
📌풀이
180ms 16472kb
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));
String str = br.readLine();
int answer = 0;
char beforeChar = ' ';
Stack<Character> stack = new Stack<>();
for(char c : str.toCharArray()){
if(c == ')'){
// 막대기 끝나는 구간
if(!stack.isEmpty() && beforeChar == ')'){
answer++;
stack.pop();
} // 막대기 잘라내는 구간
else{
stack.pop();
answer += stack.size();
}
}// 막대기 시작
else stack.push(c);
beforeChar = c;
}
System.out.print(answer);
}
}
풀이법은 어렵지 않다. 이전문자를 저장후, "()" 쇠막대기를 자르는 괄호 표시가 이어졌다면 stack.size를 결과값에 더하고 "))" 닫는 괄호가 연달아 나타났다면 막대기가 끝나는 지점이기 때문에 다는 괄호 수만큼 1씩 더해주면 된다. 막대기가 시작하는 부분인 여는 괄호가 있다면 stack에 그대로 넣어주면 된다.

'Algorithm > PTUStudy' 카테고리의 다른 글
11주차. 오등큰수 (0) | 2023.04.06 |
---|---|
10주차. 오큰수 (0) | 2023.03.30 |
10주차. 데크, 우선순위(k개 정렬 리스트 병합) (0) | 2023.03.30 |
10주차. 데크, 우선순위 큐(원형 데크 디자인) (0) | 2023.03.30 |
9주차. 스택, 큐(원형 큐 디자인) (0) | 2023.03.30 |