디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[📚정보] 파이썬 계산기(5): 후위표기식으로 전환하는 방법

신촌우왕87갤로그로 이동합니다. 2022.06.13 18:36:34
조회 535 추천 5 댓글 0
														

신촌우왕 소개


수학자, 작곡가, 요가수행자





파이썬 계산기 프로젝트(4)

-POSTFIX NOTATION


사용자가

s = "2+3*5"와 같은 수식문자열을 (중위표기식으로) 입력하면

["2", "+", "3", "*", "5"]처럼 토큰으로 분리한 후

위 토큰리스트를

["2", "3", "5", "*", "+"]와 같은 후위표기식 리스트로 전환해야 한다.


후위표기식으로 전환하기 위해

아래와 같은 두 개의 저장소를 마련한다.


좌측은 우선순위 비교대상들(괄호, 단항연산자, 이항연산자, 함수 등)이 임시로 저장되는 곳이고

우측은 최종적으로 후위표기식이 저장될 곳이다.




viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb8efa1bd8233c818608a2c6659a230cf64269cc998018780fd1814ffcb2ca9b271b59463e569ac777baeeeff1b84f307ff53ab46bfc51651c9e04






전환 방법


1. 토큰리스트에서 원소를 하나씩 하나씩 꺼내기 시작한다.

2. 토큰리스트에서 꺼낸 원소가 숫자라면 우측에 넣는다.

(단, 괄호는 우측에 넣지 않는다.)

3. 토큰리스트에서 꺼낸 원소가 여는 괄호 '(' 라면 무조건 왼쪽에 넣는다.

4. 토큰리스트에서 꺼낸 원소가 닫는 괄호 ')'라면 왼쪽 저장소에서 여는 괄호 '('를 만날 때까지 꺼내어 우측에 넣는다.

(여는 괄호, 닫는 괄호를 우측에 넣는 않는다.)

5. 왼쪽 위에 여는 괄호 '('가 있을 경우, 토큰리스트에서 꺼낸 원소가 연산자 우선순위 비교대상 원소라면 왼쪽에 넣는다.

6. 토큰리스트에서 꺼낸 원소가 왼쪽 맨 위 원소보다 연산자 우선순위가 높다면 왼쪽에 넣는다.

7. 토큰리스트에서 꺼낸 원소가 왼쪽 맨 위 원소보다 연산자 우선순위가 높지 않다면 높아질 때까지 좌측에서 우측으로 옮긴 후, 토큰리스트에서 꺼낸 원소를 좌측에 넣는다.

8. 토큰리스트에서 꺼내는 작업이 끝났다면 왼쪽에 있는 것을 모두 꺼내어 우측으로 넣는다.





실전


입력 수식: "2+3*5"

토큰 리스트: ["2", "+", "3", "*", "5"]


"2"는 숫자이므로 우측에 넣는다. 좌측: [] 우측: ["2"]

"+"는 우선순위 비교대상이고, 좌측이 비어있으므로 좌측에 넣는다. 좌측: ["+"] 우측: ["2"]

"3"은 숫자이므로 우측에 넣는다. 좌측: ["+"] 우측: ["2", "3"]

"*"는 "+"보다 우선순위가 높으므로 왼쪽에 넣는다. 좌측: ["+", "*"] 우측: ["2", "3"]

"5"는 숫자이므로 우측에 넣는다. 좌측: ["+", "*"] 우측: ["2", "3", "5"]


토큰 리스트에서 꺼내는 작업이 끝났다.


이제 좌측에 있는 것을 모두 꺼내어 우측에 넣으면 된다.

(나중에 넣은 것을 먼저 꺼내어 우측에 추가하면 된다)


좌측에서 "*"를 꺼내어 우측에 추가한다. 좌측: ["+"] 우측: ["2", "3", "5", "*"]

좌측에서 "+"를 꺼내어 우측에 추가한다. 좌측: [] 우측: ["2", "3", "5", "*", "+"]


좌측에서 꺼내는 작업 또한 모두 끝났다.


우측에 들어있는 것이 후위표기식이다.

후위표기식: ["2", "3", "5", "*", "+"]




추천 비추천

5

고정닉 2

1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 영포티룩도 멋지게 소화할 것 같은 40대 스타는? 운영자 25/10/27 - -
- AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
1759 🔎질문 파이썬 개초보 오류 질문드립니다. [10] ㅇㅇ(1.177) 22.06.26 217 0
1758 🔎질문 파이썬 UAC 창 컨트롤 질문 [2] ㅇㅇ(59.2) 22.06.26 172 0
1757 📚정보 코파일럿쟝과 두근두근 코딩 데이트 vs 그냥 살기 ㅇㅇ(118.45) 22.06.24 151 0
1756 🔎질문 이미지 분류 이거 될까? [4] ㅇㅇ(221.153) 22.06.23 166 0
1755 🔎질문 가비지컬렉터 체감언제됨? [5] 키메라(117.111) 22.06.23 183 0
1754 🔎질문 진짜 쉬운질문하나받아주실수있나요 [4] 애기파이썬(118.217) 22.06.22 166 0
1753 🔎질문 고수님들 import 에러인가요? 알려주세요 [2] 파이썬왕초보(59.1) 22.06.21 179 0
1752 🔎질문 문과고 개인 사용 용도로 크롤링만 배우려는데 어케해야함? [4] ㅇㅇ(1.246) 22.06.21 344 0
1751 📚정보 파이썬 notepad++ 팁 ㅇㅇ(220.81) 22.06.20 178 0
1749 🔎질문 파이썬 lamda 함수 질문!! [1] ㅇㅇ(121.143) 22.06.20 174 0
1746 🔎질문 파이썬 notepad++ 질문 [5] ㅇㅇ(168.188) 22.06.19 141 0
1744 🔎질문 파이썬 IDLE 이랑 notepad++ [4] ㅇㅇ(220.81) 22.06.18 151 0
1743 일반 인도게이들 영어는 참 알아듣기 쉬운데 키메라(112.148) 22.06.18 117 0
1741 🔎질문 뭐 하나만 질문해도되냐 ? 파일 입출력관한건데 [3] ㅇㅇ(1.224) 22.06.17 167 0
1740 🔎질문 코딩 오류좀 찾아주세요 [2] 먼디(125.128) 22.06.17 316 0
1739 🔎질문 텔레그램 알리미 만들려는데 도와주세요 [1] 먼디(125.128) 22.06.17 193 1
1736 🔎질문 시험 좀 도와줄 사람 있나요? [3] ㅇㅇ(39.7) 22.06.16 167 0
1735 🔎질문 파이썬 csv 오류 어떻게 해결하는지 앎? [4] ㅇㅇ(165.132) 22.06.15 161 0
1734 🔎질문 .0이 띄어쓰기로 바뀐다 ㅋㅋ [5] ㅇㅇ(110.47) 22.06.15 183 0
1733 일반 이게 질문임 ? [2] 주넹갤로그로 이동합니다. 22.06.15 202 3
1731 🔎질문 [자료구조] 스택 리스트 질문 좀 [2] ㅇㅇ(49.164) 22.06.15 156 0
1730 🔎질문 PDF파일 편집해주는 코드가 작동은 잘 되는데 에러창이 뜹니당.. [2] ㅇㅇ(211.51) 22.06.14 250 0
1729 일반 파이썬 콘솔창에 로딩바 추가하기 [5] ㅇㅇ(155.230) 22.06.14 254 1
1727 🔎질문 텔레그램 알리미 봇 만들려는데 잘 안됩니다 [6] 먼디(125.128) 22.06.14 534 0
📚정보 파이썬 계산기(5): 후위표기식으로 전환하는 방법 신촌우왕87갤로그로 이동합니다. 22.06.13 535 5
1721 일반 역시 글삭 좆되네 [3] ㅇㅇ(91.193) 22.06.12 212 1
1718 🔎질문 파이썬 코딩 해주실분 구합니다. [3] ㅇㅇ(211.117) 22.06.12 280 0
1717 🔎질문 싱글톤 <- 이새끼 왜 필수임? [2] 키메라(117.111) 22.06.10 180 0
1716 🔎질문 ml 코드 수정 [3] ㅇㅇ(221.153) 22.06.10 186 0
1713 🔎질문 고수 형님들 파이썬 코드 결과 반전 시킬수 있나요? [10] ㅇㅇ(49.164) 22.06.09 218 0
1712 🔎질문 오늘 교양 셤봤는데 [3] ㅇㅇ(223.39) 22.06.09 186 0
1710 🔎질문 파이썬 폴리움 질문드립니다. [4] ㅇㅇ(175.205) 22.06.08 167 0
1708 🔎질문 파이썬 리스트 질문즘 [5] oo(218.152) 22.06.08 206 0
1707 🔎질문 뷰티풀수프로 셀레니움을 완전히 대체하는게 가능함? [3] ㅇㅇ(168.188) 22.06.08 199 0
1706 일반 파이썬 어렵네 [2] ㅇㅇ(45.8) 22.06.08 151 0
1705 🔎질문 매개변수 여러개일 때 중간매개변수 비워둘 수 있음? [3] ㅇㅇ(45.8) 22.06.08 134 0
1702 🔎질문 파이썬 초보 성불 부탁드립니다. ㅠㅠ [10] ㅇㅇ(222.232) 22.06.07 250 0
1701 📚정보 압축하는거 만들다가 새롭게 알게 된 것,, [3] 주넹갤로그로 이동합니다. 22.06.07 182 1
1698 💡답변 문자열에서 리스트 값 검색해서 결과로 내놓기 [10] ㅇㅇ(118.45) 22.06.06 241 0
1697 🔎질문 고수형님들 도와주십쇼 [16] ㅇㅇ(180.70) 22.06.06 168 0
1695 🔎질문 파이썬 질문드립니다 [3] 흑흑(218.152) 22.06.05 179 0
1692 🔎질문 셀 명령어 파이썬 py파일로 어떻게 짜나요 [8] ㅇㅇ(211.36) 22.06.04 209 0
1690 🔎질문 이거 왜 실행 안되는지 아는 분 계신가요? [4] dd(221.138) 22.06.03 152 0
1688 🔎질문 atom vs VScode [4] ㅇㅇ(121.174) 22.06.03 194 0
1687 🔎질문 둘중 뭐가더낫노? [2] 키메라(112.148) 22.06.02 152 0
1686 🔎질문 왜 개발자들은 찐따처럼 생겼을까 [1] ㅇㅇ(165.132) 22.06.01 230 0
1685 🔎질문 파이썬 생초보 질문드려요~ [3] 어렵다(119.204) 22.06.01 199 0
1684 🔎질문 선생님들 콘솔창에 찍혀있는 로그 읽어들일수는 없나요? [2] ㅇㅇ(59.4) 22.06.01 120 0
1682 일반 코드 올릴때 외부 사이트좀 써주면 안되냐? [1] ㅇㅇ(223.39) 22.05.31 133 0
1681 🔎질문 형님들... [2] ㅇㅇ(182.172) 22.05.31 184 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2