[연습문제] 지난 시험 복습 문제 3
지난 시험 복습 문제 3 (211014)
네카라쿠배 온라인 1기를 수강하며 코딩테스트 시험 봤던 문제들을 다시 풀어보자.
낱말 게임
function solution(pattern, string) {
const words = string.split(' ');
const patterns = [...pattern];
const hash = patterns.reduce((acc, cur) => {
acc[cur] = null;
return acc;
}, {});
for (let i = 0; i < words.length; i++) {
if (!hash[patterns[i]]) hash[patterns[i]] = words[i];
else if (hash[patterns[i]] !== words[i]) return false;
}
const hashValue = Object.values(hash);
return hashValue.length == new Set(hashValue).size ? true : false;
}
console.log(solution('가나다라', '드래곤 바나나 드래곤 키위'));
console.log(solution('가가가가', '바나나 바나나 바나나 바나나'));
console.log(solution('가나가나', '바나나 바나나 바나나 바나나'));
먹방
function solution(bj, one, two) {
return `${one.length * 150 + two.length * 300 + 450}만원(${bj
.filter(person => ![...one, ...two].includes(person))
.join('')})`;
}
console.log(solution(['혁준', '하밥', '양상', '심심이', '소스왕'], ['혁준', '양상'], ['소스왕', '심심이']));
console.log(solution(['a', 'b', 'c', 'd', 'e'], ['e'], ['b', 'a', 'd']));
연속된 2개 문자열 없애기
function solution(s){
const stack = [s[0]]
for (let i = 1; i<s.length; i++){
if (stack[stack.length-1] === s[i]) stack.pop()
else stack.push(s[i])
}
return stack.join("")
}
console.log(solution("aacddefg"))
console.log(solution("abbac"))