티스토리 뷰

728x90

문제 링크

www.acmicpc.net/problem/21737

 

21737번: SMUPC 계산기

SMUPC를 기념하기 위해 ALGOS와 DSC Sookmyung에서는 SMUPC의 각 글자로 계산이 이루어지는 계산기를 만들었다. 가은이와 혜민이는 이 계산기와 같은 방식으로 작동하는 프로그램을 만들고자 한다. 가은

www.acmicpc.net

 

풀이

간단한 구현문제입니다. 문자열 파싱은 자바스크립트가 편합니다.

 

1) 정규표현식으로 수와 연산자를 분리해줍시다.

/[0-9]+/는 연속한 숫자를, /[A-Z]/는 대문자를 뽑습니다.

2) 규칙에 맞게 계산해줍시다.

3) 정답을 출력합니다.

 

 

정답 코드

const fs = require('fs');
const stdin = fs.readFileSync('/dev/stdin').toString().split('\n');
const input = (() => {
    let line = 0;
    return () => stdin[line++];
})();

const calc = function (num1, num2, op) {
    if (op === 'S') return num1 - num2;
    else if (op === 'M') return num1 * num2;
    else if (op === 'U') return parseInt(num1 / num2, 10);
    else if (op === 'P') return num1 + num2;
    else return num2;
};
    
const main = function () {
    const n = +input();
    const p = input().match(/[0-9]+|[A-Z]/g);

    let op = '', val = 0;
    let ans = p.reduce((ans, v) => {
        if (isNaN(v)) {
            if ((op = v) === 'C') ans += `${val} `;
        } else {
            val = calc(val, +v, op);
        }
        return ans;
    }, '');
    if (ans === '') ans = 'NO OUTPUT';
    console.log(ans);
};

main();
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함