*괄호 추가하기1에서 연산자 우선순위만 추가 (계산 단계 하나만 추가됐다)
*숫자 자리수를 계산하기 번거로와서 string으로 처리함
2019/10/08 - [BOJ/C++] - [BOJ] 괄호추가하기
*단계
1) 괄호 추가 (addd)
- added[i] = true 인 부분은 괄호에 속하는 숫자들이다.
- 괄호 안에 연산자는 하나만 들어갈 수 있기 때문에 연산자를 기준으로 i와 i+2를 검사한다.
2) added[i] == false라면 괄호 안에 있는 숫자 혹은 연산자가 아니기 때문에 후에 계산을 진행해야 한다.
res 라는 string 백터에 넣는다.
added[i] == true라면 계산을 진행한 후 결과값을 res에 넣는다.
3) 이 단계가 왔다면 res에는
(3+8) * (7-9) * 2 =>res = [ 11, *, -2, *, 2] 이 저장되어있을 것이다.
연산자 우선순위에 따라서 *는 먼저 계산이 되어야 한다.
스택의 특성을 이용해서 '*' 연산자가 나오면 가장 위에 있는 숫자와 계산한 값을 넣어주고, 숫자 혹은 '+', '-' 라면 바로 넣어준다.
4) 마지막으로 스택에 남은 숫자들을 연산자에 따라 저장
5) 다시 addd() 로 되돌아와서 최대값 계산
'BOJ > C++' 카테고리의 다른 글
[BOJ] 9376. 탈옥 (0) | 2020.03.18 |
---|---|
[BOJ] 12094. 2048(Hard) (0) | 2020.03.18 |
[BOJ] 16988. Baaaaaaaaaduk2 (Easy) (0) | 2020.03.16 |
[BOJ] 10711. 모래성 (0) | 2020.03.15 |
[BOJ] 5557. 1학년 (0) | 2020.03.14 |