Pair Coding Interview-04

BenomadWill·2020년 3월 30일
0

Pair Coding Interview

목록 보기
5/7

모의고사

제출 문제

서울에서 김서방 찾기

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

내가 푼 문제

모의고사

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

// 문제 설명
// 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.

// 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
// 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
// 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

// 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.

// 제한 조건
// 시험은 최대 10,000 문제로 구성되어있습니다.
// 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
// 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
// 입출력 예
// answers	return
// [1,2,3,4,5]	[1]
// [1,3,2,4,2]	[1,2,3]
// 입출력 예 설명
// 입출력 예 #1

// 수포자 1은 모든 문제를 맞혔습니다.
// 수포자 2는 모든 문제를 틀렸습니다.
// 수포자 3은 모든 문제를 틀렸습니다.
// 따라서 가장 문제를 많이 맞힌 사람은 수포자 1입니다.

// 입출력 예 #2

// 모든 사람이 2문제씩을 맞췄습니다.

// 분석
// 인풋값으로 숫자로 이루어진 배열 => 아웃풋 숫자 배열
// answer 반복을 통해서 선형적으로 반복을 통해 비교를 하면서 카운트 값을 ++
// 반복을 사용하겠습니다

// 1. 결과를 넣을 빈 배열을 선언
// 2. 수포자들의 정답 수를 나타낼 빈 배열을 선언
// 3. 비교할 대상을 선언
// 4. 반복을 통해서 카운트를 늘린다
// 5. 각 카운드 비교를 통해서 결과를 리턴

function solution(answers) {
  var answer = [];
  let count1 = 0;
  let count2 = 0;
  let count3 = 0;
  let supo1 = [1, 2, 3, 4, 5];
  let supo2 = [2, 1, 2, 3, 2, 4];
  let supo3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
  for (let i = 0; i < answers.length; i++) {
    if (answers[i] === supo1[i]) {
      count1++;
    }
  }
  for (let i = 0; i < answers.length; i++) {
    if (answers[i] === supo2[i]) {
      count2++;
    }
  }
  for (let i = 0; i < answers.length; i++) {
    if (answers[i] === supo3[i]) {
      count3++;
    }
  }
  // count들의 값을 비교해서 리턴
  // console.log(count1, count2, count3)
  if (count1 > count2 && count1 > count3) {
    answer.push(count1);
  }
  if (count2 > count1 && count2 > count3) {
    answer.push(count2);
  }
  if (count3 > count1 && count3 > count2) {
    answer.push(count3);
  }
  if (count1 === count2) {
    answer.push(count1);
    answer.push(count2);
  }
  if (count1 === count3) {
    answer.push(count1);
    answer.push(count3);
  }
  if (count2 === count3) {
    answer.push(count2);
    answer.push(count3);
  }
  if (count1 === count2 && count1 === count3) {
    answer.push(count1);
    answer.push(count3);
  }
  return answer;
}

면접 전략

  1. 내가 제출했던 문제가 나와서 뭔가 전략적으로 접근하면 좋을 것 같다는 생각이 들었다
  2. 실력 보다도 뭔가 문제의 접근 방식을 보여주는 것이 좋겠다 싶었다
  3. 코딩 시간이 짧다고 생각되기 때문에 최대한 간단한 방식으로 진행하고 개선할 점에서 나의 의견을 피력해서 어떠한 문제에 접근하는 내 방식을 보여주면 좋을 것 같았다

개선할 점

  1. 페어분깨서 말씀해주신 객체를 통해서 접근하는 방식도 좋을 것 같다
  2. 코드 자체가 정말 단순하게 조건문과 반복문만을 사용했는데 그것들을 묶어서 짠다면 훨씬 간단한 코드를 만들 수 있다
  3. 문제를 정확히 이해하고 결과로 어떤 것을 보여줄 것인지 실수하지 말자

후기

최대한 단순하게 접근하는 방식으로 진행해봤다.
누가 봐도 허술한 코드지만 컨셉이 명확하고 개선점을 명확히 알고 있기 때문에 코드에 대한 할 말도 많아지는 것 같다.
코드 자체는 볼 품 없지만 컨셉에 있어서는 괜찮지않았나 싶은 코드였다
재밌었다
실제 상황에서는 훨씬 더 긴장될텐데 이러한 접근 방식도 정말 괜찮은 것 같다
물론 내가 면접관이 아니라 모르겠지만...

오늘은 여기까지
그럼 이만!

profile
BenomadWill

0개의 댓글