[1918] 후위 표기식, C

2019. 7. 20. 15:49·DEV/PS

한줄 후기 : 자구 때 후위수식 열심히 공부한 보람ㅋ

 

https://www.acmicpc.net/problem/1918

 

1918번: 후위 표기식

첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식은 주어지지 않는다. 표기식은 알파벳 대문자와 +, -, *, /, (, )로만 이루어져 있으며, 길이는 100을 넘지 않는다. 

www.acmicpc.net

전형적인 스택 문제

 

#include <stdio.h>
#include <string.h>
#define MAX_SIZE 101
int push(char data);
int pop();
int pre(char data);
char arr[MAX_SIZE];
char stack[MAX_SIZE];
int top = -1;
int main(){
	int pos=0;
	char data, ch;
	scanf("%s", arr);
	while((data = arr[pos++] )!= '\0'){
		if(data >= 'A' && data <='Z')	printf("%c", data);
		else if(data == '(')	push(data);
		else if(data == ')'){
			while((ch = pop()) != '(')	printf("%c", ch);	
		}
		else{
			while((pre(data) <= pre(stack[top])) && top != -1){
				printf("%c", pop());
			}
			push(data);
		}	
	}
	while(top != -1){
		printf("%c", pop());
	}
	return 0;
}
int push(char data){
	stack[++top] = data;
}
int pop(){
	return stack[top--];
}
int pre(char data){
	if(data == '(')	return 0;
	else if(data == '+' || data=='-')	return 1;
	else if(data =='*'|| data=='/')	return 2;
}

 

참고로 if(data >= 'A' && data <= 'Z') 안쓰고 ctype.h 선언 후 isalnum 함수 써도 된다.

 

'DEV > PS' 카테고리의 다른 글

[1158] 조세퍼스 문제, C++  (0) 2019.07.22
[1543] 문서 검색, C  (0) 2019.07.20
[9933] 민균이의 비밀번호, C  (0) 2019.07.20
[15953] 상금 헌터, C  (0) 2019.07.15
[13163] 닉네임에 갓 붙이기, C  (0) 2019.07.15
'DEV/PS' 카테고리의 다른 글
  • [1158] 조세퍼스 문제, C++
  • [1543] 문서 검색, C
  • [9933] 민균이의 비밀번호, C
  • [15953] 상금 헌터, C
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (177)
      • DEV (146)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (20)
        • injection (1)
        • CI CD (0)
        • JS, TS (1)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    aws
    boj
    렛츠락페스티벌
    slack
    GitHub
    typescript
    DP
    react
    SOPT
    Nest
    슬랙
    회고
    nodejs
    일상
    mongoDB
    솝트
    백준
    알고리즘
    PS
    이분탐색
    BFS
    위상정렬
    앱잼
    node.js
    리액트
    Nest.js
    DFS
    Express
    슬랙봇
    우선순위큐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
jobchae
[1918] 후위 표기식, C
상단으로

티스토리툴바