문제링크
아스키코드
자바스크립트에서 아스키코드 값을 알아내기 위해서는 charCodeAt 메소드를 사용한다.
s="AB"
s.charCodeAt(i)
그렇다면 아스키코드 값을 문자열로 변경할때는 어떻게 할까? 다음과 같이 fromCharCode 메소드를 사용한다.
String.fromCharCode(아스키코드 변수)
소수점 자리수 정해주기
소숫점을 정해주기 위해서는 toFixed() 메소드를 사용한다.
toFixed(2) = 둘째자리까지 를 의미한다.
문제풀이
const fs = require("fs");
BOJkey = 0;
let input = fs
.readFileSync(BOJkey ? "./자바스크립트로/1935/input.txt" : "./dev/stdin")
.toString()
.trim()
.split("\n");
let num = input.shift();
let strr = input.shift();
let dic = {};
let stack = [];
let a = 0;
let b = 0;
for (let i = 0; i < num; i++) {
let alpha = String.fromCharCode(65 + i);
dic[alpha] = +input[i];
}
// console.log(input);
// console.log(dic);
// console.log(strr);
for (let i = 0; i < strr.length; i++) {
switch (strr[i]) {
case "*":
b = stack.pop();
if (typeof b == "string") b = dic[b];
a = stack.pop();
if (typeof a == "string") a = dic[a];
stack.push(a * b);
break;
case "+":
b = stack.pop();
if (typeof b == "string") b = dic[b];
a = stack.pop();
if (typeof a == "string") a = dic[a];
stack.push(a + b);
break;
case "/":
b = stack.pop();
if (typeof b == "string") b = dic[b];
a = stack.pop();
if (typeof a == "string") a = dic[a];
stack.push(a / b);
break;
case "-":
b = stack.pop();
if (typeof b == "string") b = dic[b];
a = stack.pop();
if (typeof a == "string") a = dic[a];
stack.push(a - b);
break;
default:
stack.push(strr[i]);
break;
}
}
console.log(stack[0].toFixed(2));
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
[백준/JS] 1966 프린터큐 (0) | 2022.06.29 |
---|---|
[백준/JS] 10799 쇠막대기 (0) | 2022.06.29 |
중위표기법 후위표기법 변환 (0) | 2022.06.29 |
[백준/JS] 1874 스택 수열 (0) | 2022.06.29 |
[백준/JS] 1185 요세푸스 문제 (0) | 2022.06.28 |