[백준] 2941번 크로아티아 알파벳
첫번째 시도
변경된 문자를 크로아티아 문자로 바꾼다.
그 후 크로아티아 문자중 갯수가 2개인 문자열이 있으면 '1'로 바꾸고
최종적으로 변환된 문자열의 갯수를 반환한다.
const solution = () => {
let str = input[0].replace(/(\s*)/g, "")
const croatia = {
'c=': 'č',
'c-': 'ć',
'dz=': 'dž',
'd-': 'đ',
's=': 'š',
'z=': 'ž'
}
const twoLength = ['dž', 'lj', 'nj']
Object.entries(croatia).map(([key, value]) => {
const arr = str.split(key);
str = arr.join(value)
})
twoLength.map((v)=> {
const arr = str.split(v);
str = arr.join('1')
})
console.log(str.length)
}
solution()
- replace를 사용할 경우 정규식을 사용하지 않으면 가장 처음 것만 대체된다.
그렇기에 split과 join을 사용해 해당하는 모든 문자열을 대체해야한다. - 문자열 문제는 공백을 고려해야한다.
다른 사람 풀이
const fs = require("fs");
const input = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `ljes=njak`
).trim();
let croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
function solution(input) {
for (let alphabet of croatia) {
input = input.split(alphabet).join("Q");
}
return input.length; // return input일 경우 QeQQak를 반환한다.
}
console.log(solution(input));
배운점
생각해보면 크로아티아 문자를 한 개로만 처리하면 됐다.
나는 굳이 크로아티아 문자로 변경한 후에 2글자인 문자만 1개로 변경해서 의미없는 연산을 했다..
또 문제에 국한해서 편협적으로 생각한 것 같다.
Author And Source
이 문제에 관하여([백준] 2941번 크로아티아 알파벳), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yooon26/백준-2941번-크로아티아-알파벳저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)