반응형

⚠️ 주의!
SWEA에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.
SWEA에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.
[SW Expert Academy] 1223. 계산기2
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
계산기1에서 그다지 내용은 바뀌지 않는다. 따라서 원리 등을 파악하기 위해서는 다음 포스트를 참조.
[코딩 테스트 RUN] SWEA 수업 : 1222.계산기1
[코딩 테스트 RUN] SWEA 수업 : 1222.계산기1
⚠️ 주의!SWEA에서 낸 코딩 문제에 대한 해답이 들어있습니다.열람 시 주의해주세요. [SW Expert Academy] 계산기1 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세
bbbbabbbababababa.tistory.com
다만 하나 연산자가 늘어났다. 제일 간단하게 처리하려면 if문과 else-if문으로 +외에 *도 케이스에 넣어 처리하면 된다. 다만 여기서 중요한 것은 +연산자와 * 연산자 사이에 우선순위가 생겼다는 것. 후위를 만들 때는 이에 유의해야한다. 우선순위가 높거나 같은 연산자들을 스택에서 빼내어 num에 append해야 하므로, while(!op.isEmpty()) { num.append(op.pop()); } 과 같은 식이 추가되게 된다. 이에 따라서 이를 보조하기 위해 op라는 Deque를 추가했다. 그러므로 Deque가 두 개가 된다.
정답
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Stack;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = 10;
for (int test_case = 1; test_case <= T; test_case++) {
int N = Integer.parseInt(br.readLine());
Deque<Character> op = new ArrayDeque<>();
StringBuilder num = new StringBuilder();
for(char c : br.readLine().toCharArray()){
if(Character.isDigit(c)){
num.append(c);
} else if(c == '*') {
op.push(c);
} else if(c == '+') {
while(!op.isEmpty()) { num.append(op.pop()); }
op.push(c);
}
}
while(!op.isEmpty()) { num.append(op.pop()); }
Stack<Integer> stack = new Stack<>();
for(char c : num.toString().toCharArray()){
if(c == '*'){
stack.push(stack.pop() * stack.pop());
}
else if(c == '+') {
stack.push(stack.pop() + stack.pop());
}
else {
stack.push(c - '0');
}
}
sb.append("#").append(test_case).append(" ").append(stack.pop()).append("\n");
} //테스트 케이스 종료
System.out.print(sb.toString());
}
}반응형
'코테런 > SWEA(알고리즘 수업)' 카테고리의 다른 글
| [코딩 테스트 RUN] SWEA 수업 : 1218.괄호 짝짓기 (0) | 2026.07.04 |
|---|---|
| [코딩 테스트 RUN] SWEA 수업 : 1224.계산기3 (0) | 2026.07.02 |
| [코딩 테스트 RUN] SWEA 수업 : 1222.계산기1 (0) | 2026.06.30 |
| [코딩 테스트 RUN] SWEA 수업 : 19003. 팰린드롬 문제 (0) | 2026.03.10 |
| [코딩 테스트 RUN] SWEA 수업 : 1216. 회문2 (0) | 2026.03.10 |
