[제로 _ 10773]
* 조건
- 숫자를 계속 입력하다가 0이 나오게 되면 가장 최근에 입력된 숫자를 지운다
- 최종적으로 적어낸 수의 합을 출력한다
* 알고리즘
- 스택(stack)
* 로직(Logic)
- 리스트에 순차적으로 담다가 0이 나오게 되면 마지막으로 입력된 숫자를 제거한다
- 최종적으로 담긴 리스트들의 합을 구한다
import java.util.ArrayList;
import java.util.Scanner;
public class Problem_10773 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> lists = new ArrayList<>();
int k = scanner.nextInt();
for(int i=0; i<k; ++i){
int input = scanner.nextInt();
if(input == 0){
lists.remove(lists.size()-1);
}
else lists.add(input);
}
int sum = 0;
for(int list : lists){
sum += list;
}
System.out.println(sum);
}
}
[균형잡힌 세상 _ 4949]
* 조건
- 괄호가 주어진다 ex) '(' , ')', '[', ']'
- 괄호는 짝이 맞아야 한다
- 문자열이 주어졌을 때, 괄호의 짝이 올바르게 맞는지를 판단한다
* 알고리즘
- 스택(stack)
* 로직(Logic)
- 열린 괄호('(', '[')는 스택에 푸쉬한다
- 닫힌 괄호가 나왔을 때,
if) 스택이 비어있거나, 스택의 괄호가 짝이 맞지 않다면 -> 마킹
else if) 열린 괄호가 존재하고 짝이 맞다면 pop()
- 한 문장에 대한 과정을 끝내고 stack에 괄호가 존재한다면 -> 마킹 (짝이 안맞았다는 말이기 때문에)
- 마킹이 되어있다면 no, 아니라면 yes 출력한다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Problem_4949 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<String> stack; //열린 괄호 '(', '[' 를 관리
String input;
while ((input = br.readLine()).length() > 1 && !input.equals(".")){
stack = new Stack<>();
boolean check = true;
for(int i=0; i<input.length(); ++i){
String word = input.substring(i, i+1);
if(word.equals("(") || word.equals("[")) {
stack.push(word);
}
else if(word.equals(")")){
if(stack.isEmpty()) {
check = false;
break;
}
else if(!stack.peek().equals("(")){
check = false;
break;
}
stack.pop();
}
else if(word.equals("]")){
if(stack.isEmpty()) {
check = false;
break;
}
else if(!stack.peek().equals("[")){
check = false;
break;
}
stack.pop();
}
}
if(!stack.isEmpty()) check = false;
if(!check) System.out.println("no");
else System.out.println("yes");
}
}
}
'Algorithm > Problem_백준' 카테고리의 다른 글
분할 정복(2630, 1992) (0) | 2019.11.21 |
---|---|
큐, 덱(10845, 2164) (0) | 2019.11.19 |
수학3 (5086, 1037) (0) | 2019.10.31 |
그리디 알고리즘(11047, 1931) (0) | 2019.10.29 |
동적계획법1(2748, 1003, 1904, 9461) (0) | 2019.10.24 |