카카오 : 수식최대화 — 파이썬: 2020 카카오 인턴십 문제 풀이

“괜찮아! 아직 코딩테스트까지 3일이나 남았어” 프로젝트 (1)

SoniaComp
2 min readMar 31, 2021

2020 카카오 인턴십

  1. 키패드 누르기
  2. 수식 최대화
  3. 보석 쇼핑
  4. 경주로 건설

공식해설

문제 링크

1. 문제분해

  • 문자열을 쪼개서, 연산자 우선순위를 재정의하는 문제
  • input: 문자열 식
    output: 6개의 우선순위 순열 계산 값 중, 최대값
  • 3개의 연산에 대한 6개의 우선순위 순열, 각각에 대해 연산을 해야 한다.
    input: 연산자 우선순위, 문자열 식
    output: 결과값

2. 패턴인식, 자료 표현

  • 문자열 → 수식 계산
  • eval 함수는 expression 인자에 string 값을 넣으면 해당 값을 그대로 실행하여 결과를 출력해 준다.
  • abs : 절댓값을 출력하는 함수

3. 패턴분석, 일반화

  • 연산자의 우선순위에 따라 주어진 수식을 부분 수식으로 쪼개고 부분 수식들의 결과값을 다시 합쳐 최종 결과값을 만들어 결과를 구하는 분할 정복 문제이다. 분할 정복 문제의 특성상 재귀로 풀면 더 간단하게 코드를 작성할 수 있다.
  • 우선순위가 + > * > - 라고 가정했을 때, 낮은 우선순위부터 쪼개고, 가장 높은 우선순위까지 쪼갰을 때, 계산해 나가기 시작한다.
  • 우리가 연산자 우선순위를 계산하는 방법을 생각해볼때에도, 먼저 높은 우선순위를 계산하고, 그 결과값으로 계산하는 것처럼 말이다!!
재귀 함수의 호출순서(보라)와 리턴 순서(연파랑)를 그려보았다!

4. 구현

출처: haeseok lee 의 medium

--

--

SoniaComp
SoniaComp

Written by SoniaComp

Data Engineer interested in Data Infrastructure Powering Fintech Innovation (https://www.linkedin.com/in/sonia-comp/)

No responses yet