greenhelix
greenhelix
greenhelix
05-19 07:36
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix

greenhelix

[프로그래머스] 수식 최대화
Algorithm/Algorithm

[프로그래머스] 수식 최대화

2021. 7. 6. 18:43

문자열 식이 주어진다. 

해당 문자열 식에서 연산의 우선순위를 변경했을 때, 

절대값이 가장 큰 경우 

그 값을 반환하는 알고리즘이다. 


이 문제는 문자열을 원하는 형태로 나누고, 

연산의 우선순위를 변경하여 각 값을 계산해본다. 

이 값들 중 절대값이 가장 큰 값을 리턴하는 것인데, 이러한 반복 작업과 문자열을 필터링하는 것이 관건이다. 

 

itertools라이브러리, permutations 을 활용해야 한다. permutations는 순열 . combinations는 조합이다.

순열은 중복을 허용하지 않는다. (AB != BA) 

 

정규식을 통해서 문자열을 구분하는 것도 원할하게 쓸줄 알아야한다. 

( 풀었음에도 몇 달 지나니 아예 또 못푸는 현상 반복...) 

 

re.split() 함수

re.split('정규식', 문자열) 의 형태로 쓰여진다. 

반환은 리스트 형태로 나온다. 

 

from re import split
from itertools import permutations as pm

def solution(expression):

    cal = pm(['*', '+', '-']) # 연산순서 종류를 생성한다.
    
    answer = 0 
    
    for i in cal : 
    
    	# split, 정규식 표현으로 구분.
    	nums = split('[-+*]', expression) 
        # ['', '-', '*', '-', '+', ''] 처음과 끝 요소는 제거해준다. ([1:-1] 쓴 이유)
        cals = split('[\d]+', expression)[1:-1] 
        
        for j in i[:2] : 
        	while j in cals: 
            	idx = cals.index(j)
                sample = nums[idx] + cals[idx] + nums[idx+1]
                nums[idx] = str(eval(sample))
                cals.pop(idx)
                nums.pop(idx+1)
		sample = ''
        
        for x in range(len(cals)):
        	sample += nums[x] + cals[x]
        
        sample = abs(eval(sample + nums[-1]))
        
        if sample > answer: 
        	answer = sample 
            
    return answer

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Algorithm' 카테고리의 다른 글

Undirected Graph Adjacency List, Matrix:: 무 방향 그래프, 인접 목록, 행렬  (0) 2021.05.12
불량사용자 - 카카오 코딩테스트  (0) 2021.05.06
Binary Search 이진 탐색 이분 탐색  (0) 2021.05.06
    'Algorithm/Algorithm' 카테고리의 다른 글
    • Undirected Graph Adjacency List, Matrix:: 무 방향 그래프, 인접 목록, 행렬
    • 불량사용자 - 카카오 코딩테스트
    • Binary Search 이진 탐색 이분 탐색
    • 🧩 코딩 테스트 정복기 @21#B*06
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바