[연습문제] 지난 시험 복습 문제 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"))