수식 분석 가능한 계산기란 모르는 사람을 위해 설명하자면...
예를들어 10+2*6+2+4*(5+6)
이런식이 주어지면 우선 순위를 괄호 -> 곱셈, 나눗셈 -> 덧셈,뺄셈 이런 순으로 계산해주는 계산기를 말함.
이거 만들려면 스택도 알아야되고, 수식 표기법도 알아야 되고 그런데... 수학자가 만든 알고리즘으도 사용해야되고...
관련 내용을 전혀 배우지 않고, 머리 속으로만 생각해서 만드는건 거의 불가능하다 싶은데 어떤지???
자료구조 배우셈. 자주 나오는 예제임
스택만 알아도 할 수 있다.
또한 스택을 몰라도 하는 방법이 있기도 하다.
니가 지금 말한거 보면, 이미 어떤식으로 하는지 감은 오는거자나? 그럼 만들수 있어. 정말 못만들꺼 같은건, 애초에 어떤식으로 하는지 감도 안올때 하는 소리다.
자료구조 지금 공부중인데 스택 부분에서 나오던데... 중위 표기식을 후위 표기식으로 바꿔서 복잡하게 계산하던데 그런거 다 몰라도 하는 방법 있다는말씀??
지금 공부중이라 어렵다는 걸 알게 됐음.. 나도 사실 자료구조 배우기 전에 만들어 볼려고 좀 고민하다가 답 안나와서 그냥 안했음.
막연하게 쉽지 않을까생각되는데 구체적으로는 답이 안나오더라고요...
ㄴ원래 다 그런거임. 그런걸로 머리 싸매다가 보면 나중엔 지금하는게 별거 아닌게 되고 그런거지..
ㄴ 그렇다곤 해도... 계산기 만드는 핵심 포인트가 2가지잖아요. 1.중위 표기식을 후위 표기식으로 바꾼다. 2.중위 표기식으로 계산한다. 뭐 2는 쉬우니까 그렇다 쳐도 1을 아무리 머리싸매고 고민한다해도 알아낼 수 있을까요???
뭐 평범한 머리의 물리학자가 머리싸매고 고민한다고 해서 일반상대성이론 같은 이론을 발견해낼 수 있을까요?? 뭐 그런 것처럼 수준을 넘는 것은 생각만으로 알아내기 힘들다고 보는데...
아 오타다 후위 표기식으로 계산한다지... 그것도 스택 이용해야 되니까 힘들것네...
ㄴ그래.. 처음에는 다 혼자서 만들고 개발해보고 싶고 그렇지.. 그게 많이 도움이 되는건 사실인데, 더 도움되는건 애초에 니가 만들려는건 이미 누군가 만들어 놨던거자나? 일단 머리좀 싸매고 고민좀 하다가 이미 만들어진 멋지고 깔끔한 소스를 참조 하란 말야...
그렇다고 첨부터 잘된 소스를 보라는게 아니라 일단 자기가 어느정도 만들어보고 참조하는거지.. 보통 내 경험상 내가 50줄로 만든 소스를 다른 사람들이 10~20줄로 줄여서(문법적이 아니라 알고리즘적으로..) 만들어놓은거 보면서 충격먹다 보면.. 어느세 꾀 늘어 있곤 했어.ㅡ.ㅡ;
근데 표기식이나 스택 전혀 모르고 평균적인 두뇌가 며칠 고민하면 수식분석기반의 계산기를 만들 수는 있나요??? 뭐 수준이 낮으니 나온 결과도 수준이 낮아야할텐데...
무슨 답변을 원하는지 모르겠다. 어렵다는 말을 통해 스스로 위안을 삼고 싶은건지?
근본적으로 스택을 이용하죠, 굳이 후위식으로 바꾸지 않아도 하는 방법도 있고요, 근본은 파싱임 ㅇㅇ
그냥 만들 수 있는지 없는지 알고 싶은거죠. 만들었다는 사람도 보긴 봤는데 그 분이 자료구조를 공부하고 만든건지 c언어 문법만 뗀후에 만든건지...
만들기 쉽나요 그러니가 제가 한 며칠 고민해서 만들 수준인지... c언어 기본 문법 뗀 정도의 지식이라고 생각하고요...
그리고 기반 이론을 습득하지 않은 상태에서 생각해내는것은 대단히 어렵고, 컴공, 컴싸 학문을 다지는 이유는 이러한 이론을 습득하고 써먹는데 있다고 봐요, \'아직 진도 부분 아니니까 , 이거 몬해요\' <- 이런 제한을 두지 말아여
그렇죠 역시 기반 이론을 알아야 만들겠죠?? 기반 이론도 단순한게 아니던데 어떻게 그걸 생각해낼 수가 있겠어요???
수식 분석하는게 말이 쉽지 그게 컴파일러다.
당연히 불가능은 없다. 끙끙거리다보면 만들수는 있을거임. 하지만 대부분의 학생의 경우에는 맨땅에 구현하라고 하면 시행착오를 거치면서 휴리스틱하게 규칙을 마구마구 추가하는 방식을 사용하겠지.. 물론 이런게 나쁜건 아닌데 노력에 비해 얻는 내공이 적다..
아 컴파일러 원리도 수식 분석이라는 말씀같은데... 것도 쉽지 않져...
만약 아무것도 없는 상태에서 임의의 연산자 집합에 대한 수식 분석을 훌륭하게 처리할 수 있는 일반적인 프로그램을 만드는 학생이 있으면 정말 타고나게 우수한거임.
+ - * / () 이 정도 연산자에 대해서 만드는 것도 쉽지 않을듯... 우선 표기식과 스택이라는 장벽이 있어요... 최소한 수준이 그정도는 된다고 봐야죠... 수준이 10인 사람이 수준이 20인 것을 만드는 것은 거의 불가능할수도...
뭔가 자신의 수준을 넘는 뭔가가 생각이 되어야 되는데 보통은 자기 지식 안에서 빙글빙글 돌져...
중위표기식으로 계산기 만드는게 (파서를 만들기)어려우니까 후위로 바꿔서 쓰는거지 별거있남. 그리고 이미 쉬운 솔루션이 존재하는데 멀 어렵다고 징징댐.
분석하고 왜 이렇게 하는지 원리를 알아두고 한번 구현해보고 나중에 써먹으면 끝이잖아. 어렵지 않음.
물론 존재하는데 그걸 배우지 않고 생각해서 알아내는게 힘들다는 말
그건 계산기만드는 수준의 단계에서 해야 할 일이 아닐텐데. 백그라운드 지식이 있어야 뭐가 새로운게 나오지 없으면 걍 똥밖에 안나온다는게 내생각.
ㅇㅇ