Algorithm/알고리즘 문제 풀이
알고리즘 (6월 16일)
유로 청년
2022. 6. 16. 18:17
1. 문제 (코딩도장, 이상한 계산기)
https://codingdojang.com/scode/590?langby=java#answer-filter-area
코딩도장
프로그래밍 문제풀이를 통해서 코딩 실력을 수련
codingdojang.com
2. 생각
괄호가 없는 사칙연산 식을 입력받았을 때 오른쪽에서부터, 더하기나 빼기를 곱하기나 나누기보다 먼저 계산한 결과를 리턴하는 코드를 작성하라.
(단, 사칙연산 식은 문자열의 형식으로 입력받는다)
- 문자열 형식으로 괄호가 없는 사칙연산 식을 입력받는다.
- 입력받은 식내에 공백(space)을 제거한다.
- while문과 for문을 이용하여 앞에서부터 문자열을 하나씩 쪼개서 해당 부분이 연산기호(+, -, /, *)인지 여부 확인
→ 만약 해당 부분이 연산기호라면, 이전 문자열들은 숫자라고 판단하여 이전 문자열과 연산 기호로 인식된 부분을
각각 잘라서 리스트에 "elements" 리스트에 저장한다.
→ "elements" 리스트에 저장한 후, 해당 숫자와 기호를 원래 String에서 삭제한다.
→ 위 작업을 반복하여 숫자와 연산기호를 분리하여 "elements" 리스트에 저장한다. - 이중 for문을 이용하여 "elements" 리스트 뒤에서부터 하나씩 원소를 뽑아서 해당 원소가 "+" or "-"인지 확인
→ 해당 원소가 "+" or "-"아라면 앞 뒤 원소는 무조건 숫자이기 때문에 앞뒤 숫자끼리 계산한다.
→ 그 전에 계산하는 숫자와 연산기호를 제외한 나머지 원소들을 "result" 리스트에 임시 저장하고, 연산 결과를
"result" 리스트에 임시 저장한다. - "elements"리스트를 비우고 "result"리스트를 "elements" 리스트에 복붙한다. 그리고, "elements"리스트를 비운다.
- 4번 ~ 5번까지 과정을 "x"와 "/" 연산에 적용하여 반복한다.
- 최종 연산 결과는 "elements" 리스트에 저장되어 있기 때문에