문자열을 일정 개수로 분해, 파싱해서 객체로 수를 카운트, 문자열에 없는 것의 수도 생각해서
객체로 수를 저장, 순서에 맞게 꺼내 출력하면 되는 문제이다
중복 부분 문자열이 있는지 배열을 set 에 넣었다 뺀 후, 배열의 수가 차이가 나는지를 파악하여 알 수 있다
https://www.acmicpc.net/problem/11507
let input = [];
const readline = require("readline").createInterface({
input: process.stdin,
output: process.stdout,
});
readline.on("line", (line) => {
input.push(line);
});
readline.on("close", () => {
solution(input);
process.exit();
});
const solution = (inp) => {
let str = inp[0];
let sub = "";
let substr = [];
let oj = {};
for (let i = 0; i < str.length; i++) {
if (sub.length === 3) {
substr.push(sub);
sub = "";
}
sub += str[i];
if (i === str.length - 1) {
substr.push(sub);
}
}
let n = substr.length;
let set = new Set(substr);
let narr = Array.from(set);
let m = narr.length;
if (n !== m) {
console.log("GRESKA");
} else {
let charr = ["P", "K", "H", "T"];
let carr = [];
for (el of narr) {
let c = el[0];
carr.push(c);
let num = Number(el.slice(1));
if (oj[c]) {
oj[c]--;
} else {
oj[c] = 13 - 1;
}
}
for (el of charr) {
if (!carr.includes(el)) {
oj[el] = 13;
}
}
let ans = [];
ans.push(oj["P"]);
ans.push(oj["K"]);
ans.push(oj["H"]);
ans.push(oj["T"]);
console.log(ans.join(" "));
}
};
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 2870/javascript] 수학숙제 (0) | 2022.09.18 |
---|---|
[백준 2857/javascript] FBI (0) | 2022.09.17 |
[백준 17203/javascript] ∑|ΔEasyMAX| (0) | 2022.09.14 |
[백준 14490/javascript] 백대열 (0) | 2022.09.13 |
[백준 1822/javascript] 차집합 (0) | 2022.09.12 |
댓글