카카오 : 수식최대화 — 파이썬: 2020 카카오 인턴십 문제 풀이
2020 카카오 인턴십
- 키패드 누르기
- 수식 최대화
- 보석 쇼핑
- 경주로 건설
공식해설
문제 링크
1. 문제분해
- 문자열을 쪼개서, 연산자 우선순위를 재정의하는 문제
- input: 문자열 식
output: 6개의 우선순위 순열 계산 값 중, 최대값 - 3개의 연산에 대한 6개의 우선순위 순열, 각각에 대해 연산을 해야 한다.
input: 연산자 우선순위, 문자열 식
output: 결과값
2. 패턴인식, 자료 표현
- 문자열 → 수식 계산
- eval 함수는 expression 인자에 string 값을 넣으면 해당 값을 그대로 실행하여 결과를 출력해 준다.
- abs : 절댓값을 출력하는 함수
3. 패턴분석, 일반화
- 연산자의 우선순위에 따라 주어진 수식을 부분 수식으로 쪼개고 부분 수식들의 결과값을 다시 합쳐 최종 결과값을 만들어 결과를 구하는 분할 정복 문제이다. 분할 정복 문제의 특성상 재귀로 풀면 더 간단하게 코드를 작성할 수 있다.
- 우선순위가
+
>*
>-
라고 가정했을 때, 낮은 우선순위부터 쪼개고, 가장 높은 우선순위까지 쪼갰을 때, 계산해 나가기 시작한다. - 우리가 연산자 우선순위를 계산하는 방법을 생각해볼때에도, 먼저 높은 우선순위를 계산하고, 그 결과값으로 계산하는 것처럼 말이다!!