SWEA - 8338. 계산기 :: 매운코딩
728x90
300x250

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWxpQia60FgDFAWL&categoryId=AWxpQia60FgDFAWL&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

연산자 우선순위 적용이 되지 않는다고 하니 단계단계마다 바로바로 연산을 수행하고 넘어갔다.

+를 선택했을 경우와 *를 선택했을 경우를 각각 계산한다. 

import java.util.*;

public class Solution {

	public static int T,N,ANS;
	public static int[] num;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		T = sc.nextInt();
		
		for (int tc = 1; tc <= T; tc++) {
			ANS = 0;
			N = sc.nextInt();
			num = new int[N];
			
			// 숫자 받기
			for (int i = 0; i < N; i++) {
				num[i]= sc.nextInt();
			}
			
			dfs(1,num[0]);
			
			System.out.println("#"+tc+" "+ANS);
		}

	}
	
	public static void dfs(int idx, int sum) {
		//N개의 정수만큼 다 돌았는가?
		if(idx==N) {
			ANS = Math.max(sum,ANS);
			return;
		}
		
		dfs(idx+1,sum+num[idx]); // + 연산자를 선택했을 경우
		dfs(idx+1,sum*num[idx]); // * 연산자를 선택했을 경우
	}

}

 나도 방탈출 하러가구싶당

728x90

+ Recent posts