Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- react
- FlatList
- web view
- bfs dfs
- springboot
- 창의충전소
- 해외 대외활동
- 경우의 수
- 휴대폰 기기
- Navigation
- 티스토리챌린지
- 폴더구조
- React Native
- 노마드코더
- 이영직
- 버튼 활성화
- 구현
- React Natvive
- 비트마스킹
- BFS
- Project Bee
- ReactNative
- 완전탐색
- service 테스트
- 상속 관계 매핑
- 백준 1992
- 오블완
- multipart upload
- 원복
- 자료구조
Archives
- Today
- Total
유미의 기록들
[백준 3주차 - 16637] 괄호 추가하기 (Java) 본문
728x90
반응형
📌 문제
📝 풀이과정
1. +, -, * 와 같은 연산자 ArrayList와 숫자의 ArrayList로 나눈다 => 인덱스를 기반으로 연산을 하기 쉬워진다
for(int i=0;i<n;i++){
if(i%2==0) nums.add(input.charAt(i)-'0'); //숫자 ArrayList
else opers.add(input.charAt(i)); //연산자 ArrayList
}
2. 인덱스를 기반으로 해서 재귀함수로 탐색한다
예를 들어 3 + 8 * 7 라면 두가지 경우의 수가 나온다
1) (3 + 8) * 7 = 77 → nums[0]과 nums[1]을 opers[0]을 하고 난 후 나머지 계산
2) 3 + (8 * 7) = 59 → nums[1]과 nums[2]를 opers[1]을 하고 난 후 나머지 계산
💻 코드
import java.util.Scanner;
import java.io.*;
import java.util.*;
public class Main{
static ArrayList<Integer>nums=new ArrayList<>();
static ArrayList<Character>opers=new ArrayList<>();
static int n,ret=Integer.MIN_VALUE;
static String input;
static int operation(char a,int b,int c){
if(a=='+') return b+c;
if(a=='-') return b-c;
if(a=='*') return b*c;
return 0;
}
static void go(int here,int num){
//기저사례
if(here==nums.size()-1){
ret=Math.max(ret,num);
return;
}
go(here+1, operation(opers.get(here),num,nums.get(here+1)));
if(here+2<=nums.size()-1){
int temp=operation(opers.get(here+1),nums.get(here+1),nums.get(here+2));
go(here+2,operation(opers.get(here),num,temp));
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
n=Integer.parseInt(br.readLine());
input=br.readLine();
for(int i=0;i<n;i++){
if(i%2==0) nums.add(input.charAt(i)-'0');
else opers.add(input.charAt(i));
}
go(0,nums.get(0));
System.out.println(ret);
}
}
728x90
반응형
'코딩테스트 기록 > 알고리즘 문제' 카테고리의 다른 글
[백준 3주차 - 13913] 숨바꼭질 4 (Java) (1) | 2024.04.11 |
---|---|
[백준 3주차 - 12851] 숨바꼭질2 (Java) (0) | 2024.04.10 |
[백준 3주차 - 12869] 뮤탈리스크 (Java) (0) | 2024.04.08 |
[백준 2주차 - 2178] 미로탐색 (Java) (1) | 2024.04.04 |
[백준 3주차 - 16234] 인구이동 (Java) (0) | 2024.04.02 |
Comments