반응형
https://programmers.co.kr/learn/courses/30/lessons/67257
이 문제도 시험 당시에는 제대로 못 풀었었다.
재귀를 활용한 분할정복으로 접근해야 하는 문제.
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]) ] ) )
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스. 최적의 행렬 곱셈 (Level 4) (0) | 2020.09.03 |
---|---|
[Python] 프로그래머스. 2020 카카오 인턴 - 경주로 건설 (Level 3) (0) | 2020.09.02 |
[Python] 프로그래머스. 2020 카카오 인턴 - 키패드 누르기 (Level 1) (0) | 2020.08.31 |
[Python] 프로그래머스. 2020 카카오 인턴 - 보석 쇼핑 (Level 3) (0) | 2020.08.28 |
[Python] 백준 11066. 파일 합치기 (0) | 2020.08.03 |