728x90
다시 보면 좋은 코드
- stack의 값을 하나씩 출력하는 코드
for (int i = stack.size() - 1; i >= 0; i--) {
System.out.println(stack.get(i));
}
문제집
1874번: 스택으로 오름차순 수열 만들기 - 실버 5
// 작성중입니다.
28278번: 스택 2 - 실버 4
- Stack 클래스가 처음이라 메서드를 확인하면서 풀었다...!!
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
// 명령어 실행
Stack<Integer> answer = new Stack<>();
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int command = Integer.parseInt(st.nextToken());
if (command == 1) {
// 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000)
int number = Integer.parseInt(st.nextToken());
answer.add(number);
} else if (command == 2) {
// 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
if (answer.empty()) {
bw.write(-1 + "\n");
} else {
bw.write(answer.pop() + "\n");
}
} else if (command == 3) {
// 스택에 들어있는 정수의 개수를 출력한다.
bw.write(answer.size() + "\n");
} else if (command == 4) {
// 스택이 비어있으면 1, 아니면 0을 출력한다.
if (answer.empty()) {
bw.write(1 + "\n");
} else {
bw.write(0 + "\n");
}
} else if (command == 5) {
// 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다
if (answer.isEmpty()) {
bw.write(-1 + "\n");
} else {
bw.write(answer.peek() + "\n");
}
}
}
bw.flush();
bw.close();
}
}
10773번: 제로 - 실버 4
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
// stack 만들기
Stack<Integer> answer = new Stack<>();
for (int i=0; i<N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int number = Integer.parseInt(st.nextToken());
if (number == 0) {
answer.pop();
} else {
answer.push(number);
}
}
// stack 합 구하기
int sum = 0;
for (int i=answer.size() - 1; i >=0; i--) {
sum += answer.get(i);
}
bw.write(sum + " ");
bw.flush();
bw.close();
}
}
9012번: 괄호 - 실버 4
- isEmpty로 중간처리
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
for (int i=0; i<N; i++) {
boolean isEmpty = false;
Stack<String> answer = new Stack<>();
String[] symbols = br.readLine().split("");
for (int j=0; j<symbols.length; j++) {
if ("(".equals(symbols[j])) {
answer.push(symbols[j]);
} else {
if (answer.isEmpty()) {
isEmpty = true;
break;
} else {
answer.pop();
}
}
}
if (isEmpty || !answer.isEmpty()) {
bw.write("NO" +"\n");
} else {
bw.write("YES" + "\n");
}
}
bw.flush();
}
}
4949번: 균형잡힌 세상 - 실버 4
// 작성 중입니다.
12789번: 도키도키 간식드리미 - 실버 3
// 작성 중입니다.
18258번: 큐2 - 실버 4
// 작성 중입니다.
2164번: 카드2 - 실버 4
// 작성 중입니다.
11866번: 요세푸스 문제 - 0 실버 4
// 작성 중입니다.
28279번: 덱2 - 실버 4
// 작성 중입니다.
2346번: 풍선 터뜨리기 - 실버 3
// 작성 중입니다.
24511번: queuestack - 실버 3
// 작성 중입니다.
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
오답노트 (0) | 2024.12.02 |
---|---|
[백준] 재귀 문제집 (0) | 2024.11.29 |
[백준] 일반 수학 1 문제집 (0) | 2024.11.21 |
[백준] 2차원 배열 문제집 (완료) (0) | 2024.11.19 |
[백준] 1차원 배열 문제집 (완료) (0) | 2023.08.04 |