Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- java
- Pspice
- D Flip Flop
- FND
- Linked List
- verilog
- soc 설계
- KEYPAD
- i2c 통신
- stop watch
- uart 통신
- atmega 128a
- Algorithm
- BASYS3
- hc-sr04
- gpio
- ring counter
- structural modeling
- DHT11
- LED
- half adder
- behavioral modeling
- pwm
- vivado
- dataflow modeling
- ATMEGA128A
- prescaling
- Recursion
- Edge Detector
- test bench
Archives
- Today
- Total
거북이처럼 천천히
알고리즘 (6월 16일) 본문
1. 문제 (코딩도장, 이상한 계산기)
https://codingdojang.com/scode/590?langby=java#answer-filter-area
2. 생각
괄호가 없는 사칙연산 식을 입력받았을 때 오른쪽에서부터, 더하기나 빼기를 곱하기나 나누기보다 먼저 계산한 결과를 리턴하는 코드를 작성하라.
(단, 사칙연산 식은 문자열의 형식으로 입력받는다)
- 문자열 형식으로 괄호가 없는 사칙연산 식을 입력받는다.
- 입력받은 식내에 공백(space)을 제거한다.
- while문과 for문을 이용하여 앞에서부터 문자열을 하나씩 쪼개서 해당 부분이 연산기호(+, -, /, *)인지 여부 확인
→ 만약 해당 부분이 연산기호라면, 이전 문자열들은 숫자라고 판단하여 이전 문자열과 연산 기호로 인식된 부분을
각각 잘라서 리스트에 "elements" 리스트에 저장한다.
→ "elements" 리스트에 저장한 후, 해당 숫자와 기호를 원래 String에서 삭제한다.
→ 위 작업을 반복하여 숫자와 연산기호를 분리하여 "elements" 리스트에 저장한다. - 이중 for문을 이용하여 "elements" 리스트 뒤에서부터 하나씩 원소를 뽑아서 해당 원소가 "+" or "-"인지 확인
→ 해당 원소가 "+" or "-"아라면 앞 뒤 원소는 무조건 숫자이기 때문에 앞뒤 숫자끼리 계산한다.
→ 그 전에 계산하는 숫자와 연산기호를 제외한 나머지 원소들을 "result" 리스트에 임시 저장하고, 연산 결과를
"result" 리스트에 임시 저장한다. - "elements"리스트를 비우고 "result"리스트를 "elements" 리스트에 복붙한다. 그리고, "elements"리스트를 비운다.
- 4번 ~ 5번까지 과정을 "x"와 "/" 연산에 적용하여 반복한다.
- 최종 연산 결과는 "elements" 리스트에 저장되어 있기 때문에