๋ฐ์ํ
๋ฌธ์ (Gold 1)
https://www.acmicpc.net/problem/16639
ํ์ด
- ์ซ์์ ์ฐ์ฐ์๋ฅผ ํ๋ฒ์ ์ ์ฅํ ์ ์๋ Expression ํด๋์ค ์์ฑ
-> ์ซ์๋ฅผ char๋ก ํ๋ฒ์ ์ ์ฅํ๋๋, 9 ์ด์์ ์ซ์๋ ์ ๋๋ก ์๋ํ์ง ์์ ใ ใ - ์ฐ์ฐ ๋ฆฌ์คํธ์์ ์ซ์๊ฐ ๋์ค๋ ์ง์ ์ธ๋ฑ์ค๋ฅผ ๋๋ฉฐ ์ฐ์ฐ ์ํ ํ, ๋จ์ ์ฐ์ฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ๊ท ๋๋ฆผ
- ๊ธฐ์ ์กฐ๊ฑด: ๋ฆฌ์คํธ์ ์์ ํ๋๋ง ๋จ์์์ ๋ ( == ์ซ์ ํ๋๊ฐ ๋จ์์์ ๋ )
- ์ง์ idx( ์ซ์๊ฐ ์๋ idx )๋ฅผ ๋๋ฉด์ ๋ฐ๋ณต๋ฌธ ์คํ
- ํด๋น ์ธ๋ฑ์ค๋ถํฐ ์ซ์(i), ์ฐ์ฐ์(i+1), ์ซ์(i+2)๋ฅผ ์ฐจ๋ก๋ก ์ถ์ถ
- ์ถ์ถ ํ, ๋ฆฌ์คํธ์์ ์ญ์
-> ๊ธฐ์กด ๋ฆฌ์คํธ์์ ์ญ์ ์, ๋ค์ ์ฐ์ฐ์ ์ํฅ์ ์ค์ผ๋ก ๋ณต์ฌํ ๋ฆฌ์คํธ์์ ๋ก์ง ์ํ - ์ฐ์ฐ์์ ๋ฐ๋ผ ์ฐ์ฐ ์ํใ
- ์ฐ์ฐ ์ํ ๊ฒฐ๊ณผ๋ฅผ i๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅ
- ์ฐ์ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ๊ท์ ํ์
์ฝ๋
๋๋ณด๊ธฐ
package implement;
import java.util.*;
import java.io.*;
public class BOJ_16639_๊ดํธ์ถ๊ฐํ๊ธฐ3 {
/**
* Expression ์์๋ค์ ์ ์ฅ
*/
static class Expression{
boolean number;
long num;
char exp;
public Expression(boolean number, long num) {
this.number = number;
this.num = num;
}
public Expression(boolean number, char exp) {
this.number = number;
this.exp = exp;
}
}
static long result = Long.MIN_VALUE;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String str = br.readLine();
List<Expression> exp = new ArrayList<>();
for(int i =0 ; i < N ; i++){
if(0<=str.charAt(i)-'0'&&str.charAt(i)-'0'<10){ // ์ซ์ ์ ์ฅ
exp.add(new Expression(true, str.charAt(i)-'0'));
} else{ // ์ฐ์ฐ์ ์ ์ฅ
exp.add(new Expression(false, str.charAt(i)));
}
}
makeExpression(exp);
System.out.println(result);
}
private static void makeExpression(List<Expression> rem) {
if(rem.size() == 1){ // ์ซ์ ํ๋๋ง ๋จ์์ ๋
result = Math.max(result, rem.get(0).num);
return;
}
for(int i =0 ; i < rem.size()-2 ; i+=2){
List<Expression> tmp = new ArrayList<>();
for(Expression e:rem) tmp.add(e);
long x = tmp.get(i).num; // ์ซ์ 1
char y = tmp.get(i+1).exp; // ์ฐ์ฐ์
long z = tmp.get(i+2).num; // ์ซ์ 2
tmp.remove(i+2); // ๋ฆฌ์คํธ์์ ์์ฐ
tmp.remove(i+1);
tmp.remove(i);
switch (y){
case '+':{
long n = x+z;
tmp.add(i, new Expression(true, n)); // ๊ธฐ์กด ์ธ๋ฑ์ค์ ๊ณ์ฐ ๊ฐ ์ถ๊ฐ
break;
}
case '-':{
long n = x-z;
tmp.add(i, new Expression(true, n)); // ๊ธฐ์กด ์ธ๋ฑ์ค์ ๊ณ์ฐ ๊ฐ ์ถ๊ฐ
break;
}
case '*':{
long n = x*z;
tmp.add(i, new Expression(true, n)); // ๊ธฐ์กด ์ธ๋ฑ์ค์ ๊ณ์ฐ ๊ฐ ์ถ๊ฐ
break;
}
}
makeExpression(tmp);
}
}
}
๋ฐ์ํ
'๐ ์๊ณ ๋ฆฌ์ฆ > Implementation' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2531๋ฒ: ํ์ ์ด๋ฐฅ (Java) (0) | 2022.04.14 |
---|---|
[๋ฐฑ์ค] 1253๋ฒ: ์ข๋ค (Java) (0) | 2022.04.13 |
[๋ฐฑ์ค]11660๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 9996๋ฒ: ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 18222๋ฒ ํฌ์-๋ชจ์ค ๋ฌธ์์ด ( Java ) (0) | 2022.02.16 |