programmers.co.kr/learn/courses/30/lessons/67257
코딩테스트 연습 - 수식 최대화
IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과
programmers.co.kr
오늘의 문제입니다. 수식 문자열이 주어지면 (+,-,*)연산의 우선 순위를 능력껏 수정해서 최대값을 계산하라는 문제입니다.
문제 접근
저 같은 경우에는 일단 "100+200"이 있으면 100,+,200 씩 나누도록 분리했습니다.
test = expression.replace('-',' - ').replace('+',' + ').replace('*',' * ').split()
제가 한건 정석적인 방법은 아니라고 생각해요. split 함수를 이용해서 공백을 기준으로 문자열을 자를 수 있잖아요? 그럼 '-'를 ' - '로 바꾸면 앞 뒤로 공백이 들어가니까 여기가 다 잘리겠죠. 이렇게 조금 우회해서 사용해봤습니다.
그 다음에는 이제 수식조합이 나올 수 있는 n!의 경우의 수 만큼 반복문을 돌리면서 계산을 해야겠죠. 사실상 이게 메인이죠.
소스 코드
그렇게 완성된 코드입니다. python의 경우 permutations를 이용해서 순열을 구할 수 있습니다. 현재는 우선순위에 따른 '순서'가 필요하니 조합이 아니라 순열을 이용했습니다. 또 원래는 막 stack에 넣다뺐다 막 그랬는데 python list 슬라이싱..?을 이용하도록 수정했습니다. 참고로 저는 연산자에 따라서 계산하는 함수를 따로 만들어서 사용했는데요. 심지어 문자열이라서 일일이 int형으로 고쳐줬습니다만.. python에 eval이라는 함수를 이용하면 문자열 수식을 계산할 수 있다는 사실.. 두둥..
특히나 python은 파이써닉하게 푸는 사람들이 많아서 다른 사람들의 풀이를 보면 그게 그렇게 재밌습니다. eval() 관련 링크 첨부해드리겠습니다.
eval 함수 링크
[python] 파이썬 eval 함수 정리 및 예제
안녕하세요. BlockDMask 입니다. 오늘은 조금 색다른 함수인 eval 이라는 함수를 가지고 왔습니다. 이 함수는 간단해서 이해하는데는 문제가 없을 것 입니다. 하지만, 이 함수가 유용한게 맞는지
blockdmask.tistory.com
'알고리즘 > ps' 카테고리의 다른 글
[python] 백준 2357 최솟값과 최댓값 (0) | 2021.05.12 |
---|---|
[python] 로또의 최고 순위와 최저 순위 (0) | 2021.05.07 |
[python] 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 (0) | 2021.05.04 |
[python] 백준 3190 뱀 (0) | 2021.03.31 |
[파이썬] 백준 바이러스 2606번 (0) | 2021.03.17 |