TIL 2023 09 25

김민준·2023년 9월 25일
0

프로그래머스

참조한 사이트

프로그래머스

서울에서 김서방 찾기

풀이 비교

나의 풀이

function solution(seoul) {
    var answer = '';
    const location = seoul.indexOf('Kim')
    
    answer = `김서방은 ${location}에 있다`
    
    return answer;
}

너무 단순해서 다른 사람의 풀이도 이걸 좀 더 압축해서 한줄로 쓰는것 외의 해답이 있을까 의문이다.

다른 풀이

// 다른 사람 풀이 1
const solution = (arr) => `김서방은 ${arr.findIndex(s => s === 'Kim')}에 있다`;
// 다른 사람 풀이 2
function findKim(seoul){
  return `김서방은 ${seoul.indexOf('Kim')}에 있다`;
}
// 다른 사람 풀이 3
function findKim(seoul){
  var idx = 0;
  //함수를 완성하세요
    for (var i = 0; i < seoul.length; ++i)
  {
    if (seoul[i] == "Kim")
    {
        idx = i;
      break;
    }
  }
  return "김서방은 " + idx + "에 있다";
}

보다시피 for문을 돌린 것 하나 빼고는 다비슷하게 풀었다.

이제 속도 차이를 보자

속도차이

async function runSolutionWithTiming(solutionFn, arr) {
  const startTime = new Date();
  for (let i = 0; i < 10000000; i++) {
    await solutionFn(arr);
  }
  const endTime = new Date();
  const executionTime = endTime - startTime;

  console.log(`${solutionFn.name} 실행 시간: ${executionTime}ms`);
}

async function main() {
  const arr = ["Queen", "Tod", "Kim"];

  await runSolutionWithTiming(solution0, arr);
  await runSolutionWithTiming(solution1, arr);
  await runSolutionWithTiming(solution2, arr);
  await runSolutionWithTiming(solution3, arr);
}

main()
  .then(() => {
    console.log("모든 실행이 완료되었습니다.");
  })
  .catch((error) => {
    console.error("에러 발생:", error);
  });

같은 조건으로 1천만번, 2세트 진행했다.

혹시나해서 나의 코드를 한줄로 고쳐봤는데 1064ms로 실행시간에 변화가 없었다. 속도차이가 없으니 사람이 보기에 편한 원래 방법이 좋은 방법인것같다.

const arr = ["Queen", "Tod", "Kim"];const arr = ["Queen", "Kim", "Tod"]; 으로 바꾸어서 실행해보았다.

이상하게도 순서만 바꾸었는데 대부분의 코드가 속도가 느려졌다.
찾아야할 대상이 한칸 앞으로 왔으니까 무의미할 지언정 빨라질것이라고 기대했는데 이상하다...

이유
node.js 엔진과 native 기능과 관련되어 있다고한다. node.js가 JS를 어떻게 parse해서 CPU에 넣는지에 대해 알아야한다고 한다.

참조한 페이지

[JS] 배열속 원하는 값 찾기(indexOf, includes)
[JavaScript] 배열 내 특정 원소 인덱스 찾기(indexOf, lastIndexOf 함수)

profile
node 개발자

0개의 댓글

관련 채용 정보