반응형
문제
풀이
package Implementation;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws IOException{
//제로
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int k = Integer.parseInt(br.readLine());//정수의 개수
ArrayList<Integer> arrLst = new ArrayList<Integer>();
for(int i = 0; i < k; i++) {
int su = Integer.parseInt(br.readLine());
if(su != 0) {
//정수가 "0"이 아닌 경우
arrLst.add(su);
}else {
//정수가 "0" 일 경우
arrLst.remove(arrLst.size() - 1);
}
}
// 최종적으로 적어 낸 수의 합 구하기
int sum = 0;
for(int num : arrLst) {
sum += num;
}
System.out.println(sum);
br.close();
}
}
팁
1. 자료 구조 - 스택(Stack)
- 리스트의 한쪽 끝에서 수행되는 선형 리스트.
- LIFO(Last In First Out): 가장 마지막에 입력된 자료가 가장 먼저 삭제되는 방식.
- 스택의 작업: 삽입(push), 삭제(pop)
2. ArrayList 사용하여 구현하기
수를 입력받아 0이 아닌경우 리스트에 삽입하고,
0인 경우에는 (리스트.size() - 1)위치의 값. 즉, 가장 최근에 쓴 수를 삭제한다.
for(int i = 0; i < k; i++) {
int su = Integer.parseInt(br.readLine());
if(su != 0) {
//정수가 "0"이 아닌 경우
arrLst.add(su);
}else {
//정수가 "0" 일 경우
arrLst.remove(arrLst.size() - 1);
}
}
출처
반응형
'알고리즘 > Java' 카테고리의 다른 글
[백준] 15829.Hashing(Java8) (0) | 2021.10.18 |
---|---|
[백준] 5585.거스름돈(Java8) (0) | 2021.10.17 |
[백준] 1476.날짜 계산(Java8) (0) | 2021.10.13 |
[백준] 7568.덩치(Java8) (0) | 2021.10.12 |
[백준] 1009.분산처리(Java8) (0) | 2021.10.11 |