문제: https://programmers.co.kr/learn/courses/30/lessons/67257
시뮬레이션 문제입니다.
1. 연산자들간의 우선순위 정하기: n!
2. 1번 우선순위에 따라 계산하기
수식을 컨트롤할 자료구조를 정하는 게 중요한 문제였네요.
저는 deque를 써서 해결했습니다.
맨 처음에는 (수식어 파싱문제 = 스택)이라 생각하고 스택만 쓰다가 망했습니다.
스택을 통해 expression을 파싱하면 수식 순서가 반대로 되는데,
이 때문에 앞에서부터 계산해야 할 것을 뒤에서부터 계산하게 됩니다.
이게 문제가 되는 이유는 뺄셈의 경우 숫자의 위치가 바뀌게 되면 다른 값이 나오기 때문입니다.
e.g.
(520 - 60000) - 100 = -59,580
(100 - 60000) - 520 = -60,420
코드: https://github.com/cottory/algorithm/blob/master/PROGRAMMERS/kakao2020_02.cc
'Algorithm > Programmers' 카테고리의 다른 글
[코딩테스트 연습] 여행 경로 (0) | 2020.07.31 |
---|---|
[2020 카카오 인턴십] 보석 쇼핑 (0) | 2020.07.25 |
[2020 카카오 인턴십] 키패드 누르기 (0) | 2020.07.25 |
[코딩테스트 연습] 징검다리 (0) | 2020.07.24 |
[코딩테스트 연습] 올바른 괄호의 갯수 (0) | 2020.07.24 |