Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 중첩네비게이션
- MVVM
- 재밌긴함
- 패파
- 스택
- 너무 어렵다
- 패스트파이브
- 사무실
- 백준
- 알고리즘
- 공유오피스
- media3
- 내부프레그먼트
- 가든웨딩
- 파이썬
- 안드로이드
- SAA
- parentfragment
- rxandroid
- Stack
- fragmentcontainer
- Kotlin
- 후기
- innernavigation
- 자바
- 아키텍쳐
- 더베일리하우스 삼성점
- Android
- 코틀린
- media3 transformer
Archives
삽질도사
[백준] 10799 쇠막대기 자바 본문
반응형
https://www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
저는 처음에 단순히 인덱스로 접근해서 마지막 ' ( '로 돌아갔더니 메모리초과가 나서 stack으로 풀었습니다.
일단 stack구조를 활용하는 문제입니다. ' ( ' 모양은 모두 push하고,
갈색으로 빗금친 괄호의 뜻은 ' ) ' 모양이 왔을 때에 이전의 ' ( '를 pop한다는 의미입니다.
레이저가 지나가는 빨간선,녹색선의 왼쪽을 기준으로 막대의 갯수를 세는 것이 핵심입니다.
레이저가 지나가면 위의 사진처럼 막대가 조각나고, 그것의 갯수는 stack에 쌓아둔 ' ( '의 갯수입니다. (stack size)
보라색처럼 이후에 ' ) '모양이 나오면 하나의 막대가 끝나는 것이기 때문에 단순히 +1을 해주면 됩니다.
주의할 점은 ' ( '을 push할 때에 인덱스 값으로 넣어주어야 아래의 코드처럼 레이저를 구분할 수 있습니다.
단순히 풀면 풀리긴 하지만 에러나고, 정답풀이를 보면 이해할 수 있지만 떠올리기는 힘든 문제였다고 생각합니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class 쇠막대기 {
static String str;
static Stack<Character> stk = new Stack<Character>();
static int sum = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
Stack<Integer> s = new Stack<>();
for (int x = 0; x < str.length(); x++) {
char next = str.charAt(x);
if(next == ')' && s.peek() == x-1) {
s.pop();
sum+=s.size();
}
else if(next == '(')
s.add(x);
else if(next == ')') {
s.pop();
sum ++;
}
}
System.out.println(sum);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 15683 감시 삼성 SW 역량 테스트 기출 문제 (2) | 2024.01.25 |
---|---|
[백준] 2504 괄호의 값 자바 (0) | 2021.12.28 |
[백준] 빗물 14719 자바 (0) | 2021.03.24 |
[백준] 달력 20207 자바 (0) | 2021.03.23 |
[백준] 단어뒤집기2 17413 자바 (0) | 2021.03.16 |