공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/코딩테스트 문제풀이

[Python] 프로그래머스. 2020 카카오 인턴 - 수식 최대화 (Level 2)

inspirit941 2020. 9. 1. 17:06
반응형

https://programmers.co.kr/learn/courses/30/lessons/67257

 

코딩테스트 연습 - 수식 최대화

IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 �

programmers.co.kr

이 문제도 시험 당시에는 제대로 못 풀었었다.

재귀를 활용한 분할정복으로 접근해야 하는 문제.

 

1. 문자열을 우선순위 문자열을 기준으로 분리한다.

2. 분리한 문자열을 다음 우선순위 문자열을 기준으로 분리한다.

3. 가장 마지막 우선순위 문자열에 도착했으면, 연산한 결과를 문자열 형태로 리턴한다.

 

100-200*300-500+20 이고 연산 우선순위가 (*, -, +)인 경우 -> 가장 먼저 연산해야 할 순서가 *, 마지막에 연산해야 할 순서가 +로 전제

1. 가장 마지막에 연산해야 할 +를 기준으로 문자열을 분리한다. -> eval(("+".join([100-200*300-500, 20])))

2. 분리된 각 문자열을 다음 우선순위 문자열인 -로 분리한다. -> eval("+".join([ eval("-".join([100, 200*300, 500]), 20])))

3. 마지막 우선순위 문자열을 연산한 뒤 결과를 리턴한다. -> eval("+".join([ eval('-'.join([100,60000,500])), [20]) ] ) )

 

 

반응형