[CodingTest] 2020 라인 SW개발 DEVEL-UP 인턴십 코드테스트 1번


1번 : Solved

제출한 코드

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
  // 인풋 데이터 정제
  const n = data.split(" "),
    tmp = n[1].split(/\n/),
    mesages = Number(n[0]),
    consumers = Number(tmp[0]);
  tmp.shift()
  const times = tmp;

  let result = 0,
    compare = [];
  
  // 로직 수행을 위한 데이터 정제
  for (let i = 0; i < consumers; i++) {
    let tmp = {}
    tmp['index'] = i
    tmp['time'] = 0
    compare.push(tmp)
  }

  // 가장 낮은 time 값을 sort로 찾고 대기열의 숫자 추가
   // A번
  for (let i = 0; i < times.length; i++) {
    compare.sort((a, b) => a.time - b.time); // m * nlogn
    compare[0].time += Number(times[i]);
  }

  // 최대값 추출
  compare.sort((a, b) => b.time - a.time);  //  nlogn
  console.log(String(compare[0].time))
});

느낀점

객체 배열(Obect Array)과 정렬(sort)로 푸려고함. 시간복잡도 O(nlogn) A번에서 좀 더 효율적인 알고리즘을 만들 수 없었을까. js 반복문 for, reduce, forEach, map, some, every 매서드들의 용도 다시 공부함.

  • for : array에 대한 반복이 아닌 횟수 반복을 적용하고자할 때 사용.
  • reduce : 깔대기에 물을 들이 붙는 것처럼 축적된 값(accumulator)를 반환. 비교할때, 축적된 값을 뽑을때 사용.
  • forEach : 함수를 순회함. index를 볼 수 있음. for문을 대체가능
  • map : 함수를 순회하며 인자를 다른 인자로 맵핑해서 새로운 array를 반환.
  • some : 배열 안의 어떤 요소라도 주어진 판별 함수를 통과하는지 테스트합니다.
  • every : 모든 요소들이 조건을 만족시키는지 확인.

수정한 답

  // ...
  // A번 수정
  // 가장 낮은 time 값을 sort로 찾고 대기열의 숫자 추가
  for (let i = 0; i < times.length; i++) { // n
    // compare.sort((a, b) => a.time - b.time);
    // compare[0].time += Number(times[i]);
    const target = compare.reduce((a,b) => a.time > b.time ? b : a) // n*m
    compare.forEach(e => {
      if(target.index === e.index) e.time += Number(times[i])
    }) // n*2m
  }

  // 최대값 추출
  // compare.sort((a, b) => b.time - a.time);
  // console.log(String(compare[0].time))
  const answer = compare.reduce((a,b) => a.time <b.time ? b : a)
  console.log(String(answer.time))
})




2023

Flutter 맛보기 1

3 분 소요

직방 기술지원팀 기술공유 세미나 중 플러터를 소개한 내용입니다

Back to Top ↑

2022

Back to Top ↑

2019

[Tutorial] Storybook과 Bit을 활용한 UI 컴포넌트 관리(Workflow)

1 분 소요

회사에서 프론트엔드 개발원칙을 SFC(Single File Component)에서 UI 컴포넌트를 기준으로 CDD(Component Driven Development)를 진행하려고 한다. 그래서 체계적으로 관리하기위해 Storybook과 Bit을 도입해보고자 한다. 각각의 역할은 ...

[Workflow] 프론트엔드 개발조직을 위한 워크플로 설계

2 분 소요

작성 배경 회사의 작업구조를 페이지 중심 개발에서 UI 컴포넌트 중심 개발로 변경하면서 Workflow를 개선할만한 환경을 구성해야했다. 폐쇄망 기반에서 개발자간 UI 명세서 역할을 할 수 있는 Storybook과 그것을 공유할 Verdaccio라는 구축형 NPM Pri...

[ESlint & Prettier] 개발 관습 설정 in Visual Studio

1 분 소요

회사 프로젝트를 작업하기 전 프론트엔드 개발자들 간의 코드 규칙을 Eslint와 Prettier 설정을 맞춰 관리해가는 방향을 정했다. 아직 협업을 할 경우는 없지만 미래에 인수인계 받거나 협업을 진행할 경우 코드관습이 달라 고생할 경우를 대비하기로 했다. 설정은 작업을 진행하며 ...

[CodingTest] 2019-10-26 SQL문제

최대 1 분 소요

공부겸 코딩테스트 사이트에서 토요일 오전 10시에 백엔드 포지션 테스트를 해준다기에 참여해봤다. SQL문제가 나왔는데 더 좋은 답이 있는것 같아 나중에 기록해두고 수정해보기로 한다.

[CodingTest] 피보나치 수열

1 분 소요

문제 : 피보나치 수열 제 1항부터 입력한 자연수(N)까지의 피보나치 수열 항들의 합을 구하여라.

[Syntax] 새로 알게된 파이썬 문법 정리

최대 1 분 소요

chaning comparison 파이썬은 chaning comparison이라는 신기한 문법이 있다. 참고 if a < b and b < c : (...) 라는 구문이 if a < b < c : (...) 으로 연산된다. 직관적인 문법이 인상적. ...

[DataType] Map & Set

최대 1 분 소요

Set vs Array - 관련기사 Set 유일값들의 배열이 필요할때(distinct) 집합의 개념이 필요할때(차집합, 교집합 등등 자체 메서드들이 많음.) index가 필요 없을때 Array에서 중복값을 없앨때 => ...

Back to Top ↑

2018

SGIS-shpToGeojson

1 분 소요

SGIS에서 받은 지도데이터(.shp)를 geojson으로 변경하는 작업 내용

Back to Top ↑