기몽수
코딩 기록일지
기몽수
전체 방문자
오늘
어제
  • 분류 전체보기 (443)
    • 알고리즘 - SWEA (210)
      • D1 (19)
      • D2 (25)
      • D3 (143)
      • D4 (21)
      • D5 (2)
    • 알고리즘 - Programmers (74)
      • Unrated (34)
      • Lv 0 (4)
      • Lv 1 (3)
      • Lv 2 (32)
      • Lv 3 (1)
    • 알고리즘 - Baekjoon (158)
      • Bronze (1)
      • Silver (65)
      • Gold (90)
      • Platinum (2)
    • 취업 (0)
    • SSAFY (1)
hELLO · Designed By 김용수.
기몽수

코딩 기록일지

알고리즘 - SWEA/D4

[SW expert Academy] SWEA 1232번 사칙연산 자바(Java)

2023. 11. 16. 09:43

[D4] [S/W 문제해결 기본] 9일차 - 사칙연산 - 1232

문제 링크

성능 요약

메모리: 43,556 KB, 시간: 198 ms, 코드길이: 1,704 Bytes

제출 일자

2023-11-16 09:40

출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do

import java.util.Scanner;
class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		for(int tc = 1; tc <= 10; tc++) {
            int n = sc.nextInt();
            int[] nums = new int[n+1];
            int[][] next = new int[n+1][2];
            char[] oper = new char[n+1];
            
            for(int i = 1; i <= n; i++){
                int idx = sc.nextInt();
                String tmp = sc.next();
                if(tmp.equals("+") || tmp.equals("-") || tmp.equals("/") || tmp.equals("*")){
                    oper[idx] = tmp.charAt(0);
                    nums[idx] = 0;
                    next[idx][0] = sc.nextInt();
                    next[idx][1] = sc.nextInt();
                }else{
                    nums[idx] = Integer.valueOf(tmp);
                    oper[idx] = ' ';
                }
            }
            int result = recursion(1,nums,next,oper);
            System.out.println("#" + tc + " " + result);
		}
	}
    private static int recursion(int pos, int[] nums, int[][] next,char[] oper){
        switch (oper[pos]){
            case '+':
                return recursion(next[pos][0],nums,next,oper) + recursion(next[pos][1] , nums,next, oper);
            case '-':
                return recursion(next[pos][0],nums,next,oper) - recursion(next[pos][1] , nums,next, oper);
            case '/':
                return recursion(next[pos][0],nums,next,oper) / recursion(next[pos][1] , nums,next, oper);
            case '*':
                return recursion(next[pos][0],nums,next,oper) * recursion(next[pos][1] , nums,next, oper);
            default:
                return nums[pos];
        }
    }
}

'알고리즘 - SWEA > D4' 카테고리의 다른 글

[SW expert Academy] SWEA 1226번 미로1 자바(Java)  (1) 2023.11.18
[SW expert Academy] SWEA 3752번 가능한 시험 점수 자바(Java)  (0) 2023.11.16
[SW expert Academy] SWEA 1224번 계산기3 자바(Java)  (0) 2023.11.15
[SW expert Academy] SWEA 1223번 계산기2 자바(Java)  (0) 2023.11.15
[SW expert Academy] SWEA 1222번 계산기1 자바(Java)  (0) 2023.11.15
    '알고리즘 - SWEA/D4' 카테고리의 다른 글
    • [SW expert Academy] SWEA 1226번 미로1 자바(Java)
    • [SW expert Academy] SWEA 3752번 가능한 시험 점수 자바(Java)
    • [SW expert Academy] SWEA 1224번 계산기3 자바(Java)
    • [SW expert Academy] SWEA 1223번 계산기2 자바(Java)
    기몽수
    기몽수

    티스토리툴바