일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- java
- request property
- SWEA 6190 python
- MySQL update delete
- js XML 읽기
- web recorder
- tabs switch
- Canvas
- js canvas
- dispatcherservlet 오류
- js session
- scroll 맨 밑
- 탭 활용해 내용바꾸기
- SWEA 11315 python
- sw8931
- scanner bufferedreader
- ReactMediaRecorder
- CSS
- $.ajax 사용
- 페이지 내 탭
- javascript
- SWEA 1228 python
- js 객체생성
- GitHub
- MySQL
- Git
- scroll 맨 밑 이동
- SWEA 1954 java
- jQuery EventListener
- response property
Archives
- Today
- Total
Daily Pogle
SWEA 8931. 제로 [D3] - Stack 본문
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
이 문제는 Stack 을 이용하여 문제를 해결해야한다.
이 문제를 해결하는데 기본적인 stack 개념만 가지고 있으면된다.
- 한 테스트 케이스 안에서 여러 금액을 입력받는다.
- 금액을 0으로 적으면 최근에 입력한 금액을 지운다는 의미이다.
- 0 을 이용해 제거한 금액을 제외하고 입력한 금액의 합을 구한다.
먼저 0 이외의 금액을 입력하면 stack 에 push 된다. 만약 0 의 금액을 입력하면 가장 최근에 push 된 값을 pop 하는 방식이다. 로직이 간단하므로 전체코드를 올리기로 한다
[Java] - 해당문제는 java, c, c++ 만 지원한다
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
int K = sc.nextInt();
int stack[] = new int[K];
int top = -1;
int sum = 0;
for (int i=0; i < K; i++){
int money = sc.nextInt();
if (money != 0) { // 금액이 있으면 push
stack[++top] = money;
} else { // 잘못써서 0 이면 pop
stack[top--] = 0; // 최근위치인 top 의 값을 제거하고 top을 1 내려야한다.
}
}
for (int index=0; index < K; index++){
sum += stack[index];
}
System.out.printf("#%d %d\n", test_case, sum);
}
}
}
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
SWEA 1228. 암호문1 - Python (0) | 2023.01.20 |
---|---|
SWEA 11315. 오목판정 [D3] - Python (0) | 2023.01.18 |
SWEA 6190. 정곤이의 단조증가하는 수 [D3] - python (0) | 2023.01.18 |
SWEA 1954. 달팽이 숫자 [D2] - java (0) | 2023.01.13 |