JavaScriptmain.js · 20 行const lines = require("fs").readFileSync(0, "utf8").split("\n");const n = Number(lines[0]); // 글자 토막 하나를 JavaScript 값으로 바꾼다function parse(token) { if (token.startsWith('"')) return token.slice(1, -1); // "5" → 문자열 5 if (token === "true") return true; if (token === "false") return false; if (token === "null") return null; if (token === "undefined") return undefined; if (token === "NaN") return NaN; return Number(token); // -0 도 그대로 -0} const out = [];for (let i = 1; i <= n; i++) { const [a, b] = lines[i].trim().split(" ").map(parse); out.push(a === b ? "===" : a == b ? "==" : "!=");}console.log(out.join("\n"));
TypeScriptmain.ts · 28 行import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const n: number = Number(lines[0]); type Value = string | number | boolean | null | undefined; // 글자 토막 하나를 값으로 바꾼다function parse(token: string): Value { if (token.startsWith('"')) return token.slice(1, -1); if (token === "true") return true; if (token === "false") return false; if (token === "null") return null; if (token === "undefined") return undefined; if (token === "NaN") return NaN; return Number(token);} // 타입이 Value(합집합)라서 TS도 == 를 허락한다. string과 number로 좁혀진 두 값이면 TS2367 오류function looselyEqual(a: Value, b: Value): boolean { return a == b;} const out: string[] = [];for (let i = 1; i <= n; i++) { const [a, b] = lines[i].trim().split(" ").map(parse); out.push(a === b ? "===" : looselyEqual(a, b) ? "==" : "!=");}console.log(out.join("\n"));