인프런 커뮤니티 질문&답변

00님의 프로필 이미지
00

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

3. 멘토링

다른 풀이

작성

·

279

·

수정됨

0

강의 보기전에 혼자 풀어보았는데

저의 경우에는 미리 순위를 추출해서 result ㄹ라는 변수에 저장한뒤 for문을 돌려서 result 에 있는 순위를 비교해서 답을 내도록 했는데

혹시 틀렸거나 비효율적이라면 어떤 점이 문제인지 알려주시면 감사하겠습니다..!

function solution(test) {
  let a = test.length,
    b = test[0].length;
  let result = Array.from({ length: b + 1 }, () => []); // [[], [], [], [], []]
  let answer = 0;
  for (let x of test) {
    // [3,4,1,2]
    for (let i = 0; i < b; i++) {
      result[x[i]].push(i + 1);
    }
  }

  for (let i = 1; i < b + 1; i++) {
    // 0~4
    for (let j = 1; j < b + 1; j++) {
      // result[i] 랑 result[j] 비교
      if (i === j) continue;
      let isMento = true;
      for (let n = 0; n < a; n++) {
        if (result[i][n] <= result[j][n]) {
          isMento = false;
          break;
        }
      }
      isMento && answer++;
    }
  }
  return answer;
}

let arr = [
  [3, 4, 1, 2],
  [4, 3, 2, 1],
  [3, 1, 4, 2],
];
console.log(solution(arr));

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
00님, 자바스크립트로 코딩 테스트 문제를 푸는 다양한 접근 방법이 있을 수 있습니다. 제공하신 풀이 방식은 문제 해결을 위한 독창적인 접근법 중 하나로 보이며, 특정 로직 상의 문제가 없다면 정답으로 인정될 수 있습니다. 효율성의 경우, 중첩 for 루프 사용으로 인해 시간 복잡도가 증가하는 점이 있을 수 있는데, 해당 알고리즘 문제의 크기와 요구사항에 따라 다를 수 있습니다.

제공하신 코드를 보았을 때, 멘토-멘티를 정하는 로직에서 중첩된 루프를 통해 각 학생들의 순위를 비교하고 있으며, 모든 경우에서 특정 학생이 다른 학생보다 순위가 앞선 경우에 answer를 증가시키는 방식으로 답을 도출하고 있습니다. 이 접근 방식은 멘토-멘티 관계를 찾기 위한 하나의 올바른 방법이 될 수 있습니다. 다만, 큰 입출력 데이터에 대해서는 더 최적화된 알고리즘이 있을 수 있으므로, 더 효율적인 방법이 있는지 늘 고민해볼 가치가 있습니다.

코드에 문법적인 오류나 명확한 논리적 오류가 없으므로, 제시한 방식도 충분히 유효한 풀이라고 볼 수 있습니다. 추후에 여러가지 다른 풀이 방식이나 최적화에 대해 더 배우고 싶으시다면 인프런의 다양한 자바스크립트 알고리즘 강의를 통해 추가 학습을 해보시기를 추천드립니다.

강의에 대한 추가 이해가 필요하거나 궁금한 점이 있으시다면 언제든지 질문해주시기 바랍니다.

00님의 프로필 이미지
00

작성한 질문수

질문하기