본문 바로가기

2021 정보처리기사/참고자료: 정보처리기사

사칙연산의 우선순위는 어떻게 결정될까?

728x90
반응형

덧셈,뺄셈,곱셈,나눗셈과 같은 사칙연산의 우선순위가 존재하는 원리는 무엇이고 우선순위가 있는 이유는 무엇일까? 간단한 원리를 이해하고 나면 프로그래밍에서 연산자의 우선순위가 정해지는 기준도 쉽게 이해할 수 있다. 이를 통해 Prefix, Infix, Postfix를 쉽게 변환할 수 있다.

일상생활에서 정해지는 사칙연산의 우선순위

사칙연산의 우선순위는 암기해서 쓰는 공식이나 법 같은 것이 아닌,
인류가 수백년간 지속해온 일상생활의 인지로부터 비롯된 것이라고 한다.

예를 들어, 사탕 8개가 들어있는 봉지 하나와 사탕 4개가 들어있는 봉지 2개가 들어있는 상자 1개가 있다고 했을 때.
있는 그대로의 모습을 수식으로 작성해보면 자연스럽게 다음과 비슷한 결과가 나올것이다.

(사탕8개 x 1봉지)  + (사탕4개 x 2봉지) x 1상자

중요한 것은 수식의 깔끔함이 아니라, 우리의 유전자가 곱셈을 통해 커다란 덩어리 묶음을 먼저 계산하고, 값을 구하기 편해진 상태로 나머지 숫자를 구하는 것에 익숙해져있다는 것이다. 물건을 특정 묶음으로 분류하고 갯수를 셀 때와 같이 일상에서 자연스럽게 사칙연산의 우선순위를 정하는 경우는 매우 많다. 이러한 방식이 오랜 기간동안 이어져 온 것이다.

학창시절 당연하듯 익히는 사칙연산 순서가 괄호 > 곱셈,나눗셈 > 덧셈,뺄셈인 이유는 빨리 풀기 위함이 아니라
우리가 일상에서 자연스럽게 인지한 것을 그대로 수식으로 표현하고, 그것을 정확하게 풀기 위함이다.

 

 

 


 

 

 

 

프로그래밍에서 사칙연산의 우선순위

사실 이 포스팅을 작성하게 된 계기는 자료 구조의 한 가지 형태인 트리(Tree)를 수식으로 표기하는 방법을 공부하면서이다.정보처리기사 시험에서 연산식에 대한 연산 결과를 구하는 문제가 출제됨에 따라 각 수식을 서로 반대의 관계로 변환하는 연습이 필요하다. 여기서 사칙연산의 우선순위라는 개념을 다시 한 번 상기시켜볼 필요가 있었다.

산술식을 계산하기 위해 기억 공간에 기억시키는 방법으로
전위, 중위, 후위 표기법을 서로 변환할 때 연산의 우선순위가 중요한 기준이 되기 때문이다.


프로그래밍의 산술 연산식에서 연산자에 따른 사칙연산의 우선순위와 연산 방향은 다음과 같다.

우선순위 연산자 연산방향
0  ( ) 괄호속 연산자 -
1 산술 연산자 ( * / %) >
2 산술 연산자 ( +  -  ) >


여기서 연산자의 우선순위가 같으면, 연산 방향에 따라 순서가 결정된다. 
사칙연산은 연산 방향이 좌에서 우 (->) 로 흐르므로, 수식 내에 +-가 연속할 경우 + > - 순으로, * / % 가 연속할 경우 * > / > % 순으로 연산이 진행되는 것이다. 이를 기억하고 있으면 전위 표기법(+AB), 중위 표기법(A+B), 후위 표기법(AB+) 을 서로 변환할 때 연산 우선순위에 따라 괄호로 묶는 과정이 쉽게 이해되고, 수월해진다.

 

 

 

 


 

 

 


연산자의 우선순위로 중위식(InFix)를 전위식(PreFix)로 변환하기

 




A * B + C - D / E



 

* 이진 운행법(Preorder, Inorder, Postorder)에 대한 쉬운 설명은 여기로


 

위와 같은 중위식(InFix)를 전위식(PreFix)로 옳게 변환해보자. 

1) 먼저, 연산자의 우선순위에 따라 수식을 괄호로 묶어준다.
이 때 +와 -가 연속하므로 연산 방향에 따른 우선순위에 따라 +가 괄호로 묶인다.

((A * B) +C) - (D / E)



2) 다음은 전위식 표기법(Prefix, +AB)에 따라 연산자 괄호의 앞 쪽으로 옮겨준다. 
만약 문제가 요구하는 것이 중위식 표기법(Infix, A+B)이면 연산자피연산자들의 중간으로
후위식 표기법(Postfix, AB+)이라면 연산자괄호의 뒤쪽으로 옮겨주면 된다.

 - + * ((AB)C)/(DE)



3) 불필요한 괄호를 제거해준다

- + * ABC/DE


정답은 - + * ABC/DE 이다.

이처럼 사칙연산의 우선순위에 따라 수식을 정확하게 묶어주기만 하면 이후 과정은 수월하게 되는 것이다.
이와 같은 과정을 후위식, 중위식, 전위식 모두에 동일하게 대입해서 정확한 답을 찾을 수 있다.
(정보처리기사 시험 대비용)

 

 

 

 

 

 

 

 

 

[2021 정보처리기사 필기] 바이너리 트리(Tree)의 운행법

[정보처리기사 2과목 필기 예상 키워드] 목록으로 돌아가기 과목: 2. 소프트웨어 개발 챕터: 1장 데이터 입출력 구현 키워드: 바이너리 트리(Tree)의 운행법(Traversal) #트리의 개요 #Preorder, Inorder, Post

y-oni.tistory.com

 

 

728x90