Development

[TIL] 코딩테스트, 블로그 만들기 프로젝트 API 설계

개발자 강정 2022. 1. 23. 21:11

자바스크립트 코딩테스트

https://programmers.co.kr/learn/courses/30/lessons/60057

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

//  https://programmers.co.kr/learn/courses/30/lessons/60057

function solution(s) {
    if (s.length === 1) {
        return 1
    }
    let splited_strings = []
    for (let i = 1; i <= s.length / 2; i++) {
      let splited_string = []
      for (let j = 0; j < s.length; j += i) {
        splited_string.push(s.substring(j, j + i))
      }
      splited_strings.push(splited_string)
    }
    return Math.min(...splited_strings.map(zip_length))
}

//  reduce 메소드를 활용한 문자 압축
function zip_length(arr) {
  let reserve
  let count = 0
  let zip = arr.reduce((acc, value, index) => {
    if (!reserve) {
      reserve = value
      count = 1
    } else if (value === reserve) {
      count++
    } else {
      if (count === 1) {
        acc += reserve
      } else {
        acc += count + reserve
      }
      reserve = value
      count = 1
    }
    if (index === arr.length - 1) {
      if (count === 1) {
        acc += reserve
      } else {
        acc += count + reserve
      }
    }
    return acc
  }, '')
  return zip.length
}

꽤 힘겹게 푼 것 같다. reduce 메소드를 활용해서 뿌듯하다.

 

Node.js와 express로 만드는 블로그 api 설계 해보기

https://traveling-wallaby-56e.notion.site/Node-js-express-899e3b788059410b8ba4394ef975e7b0