티스토리 뷰
https://www.acmicpc.net/problem/16637
const fs = require('fs');
const input = fs.readFileSync("./dev/stdin").toString().trim().split("\n");
const N = Number(input[0])
const formula = input[1].split('');
let answer = -Infinity;
const signCnt = Math.floor(N / 2)
const Bracket = [];
for (let i = 0; i < 1 << signCnt; i++) {
if (checkBracket(i)) {
Bracket.push(i)
}
}
Bracket.forEach(b => {
const stack = [];
let bracket = false;
formula.forEach((f, i) => {
if (isSign(f)) {
if (isBracket(i, b)) {// 괄호일때.
bracket = true;
}
stack.push(f)
} else {
if (bracket) {
const sign = stack.pop();
const prev = stack.pop();
const now = f;
const result = calc(prev, sign, now)
stack.push(result)
bracket = false;
} else {
stack.push(Number(f))
}
}
})
let res = +stack.shift();
while (stack.length > 0) {
const sign = stack.shift();
const next = stack.shift();
switch (sign) {
case '+':
res += Number(next);
break;
case '-':
res -= Number(next);
break;
case '*':
res *= Number(next);
break;
}
}
if (res > answer) answer = res;
})
console.log(answer)
function checkBracket(num) {
let prev = 0;
let loc = 0;
let flag = true;
let temp = num;
while (temp > 0 && flag) {
const now = temp & (1 << loc);
if (prev == 1 && now == 1) {
flag = false;
} else {
prev = now;
}
temp = temp >> 1;
}
return flag;
}
function isSign(c) {
if (c == '+' || c == '-' || c == '*') {
return true;
}
return false;
}
function isBracket(index, base) {
const newIndex = (index - 1) / 2;
if (base & (1 << newIndex)) { //괄호일때
return true;
} else { // 아닐 때
return false;
}
}
function calc(prev, sign, now) {
let ret;
switch (sign) {
case '+':
ret = Number(prev) + Number(now);
break;
case '-':
ret = Number(prev) - Number(now);
break;
case '*':
ret = Number(prev) * Number(now);
break;
}
return ret;
}
728x90
'자료구조 알고리즘 > 백준' 카테고리의 다른 글
Node.js) 백준 12851번: 숨바꼭질 2 (0) | 2022.03.22 |
---|---|
Node.js) 백준 13913번: 숨바꼭질 4 (0) | 2022.03.22 |
Node.js)백준 12869번: 뮤탈리스크 (0) | 2022.03.17 |
Node.js) 백준 4179번: 불! @@@@@ (0) | 2022.03.16 |
Node.js) 백준 16234번: 인구 이동 (0) | 2022.03.13 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 동적프로그래밍
- 다이나믹프로그래밍
- 최소공통조상
- 은둔청년체험
- BFS
- 면접질문
- 서버개발
- MOD
- 롱베케이션
- 다이나밍프로그래밍
- 그래프
- 서버점검
- 면접비
- create databases;
- MySQL
- create db
- 개발자면접
- node.js
- 투포인터 연습
- 투포인터
- DB 생성
- 로드나인
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함