Skip to content

Latest commit

 

History

History
53 lines (37 loc) · 2.14 KB

7.md

File metadata and controls

53 lines (37 loc) · 2.14 KB

콜라 문제

시간이 오래 걸린 이유 + 디버깅의 어려움

콜라 문제는 문제 자체가 어렵거나 하지 않다. 문제를 읽고 손으로 직접 시뮬레이션을 해보면 어떤식으로 구현해야할지 감을 잡을 수 있는 문제였다. 테스트 케이스 역시 무난하게 통과하였다.

function solution(a, b, n) {
  let count = 0,
    empty = 0;
  while (n >= a) {
    const recieved = Math.floor(n / a);
    count += recieved;
    n = recieved + (n % a);
  }

  return count;
}

그런데... 실제 제출하니 하나를 제외하고는 모든 케이스에서 실패가 떴다. 오잉?? 어디서 도대체 왜?? 나에게 주어진 1시간을 다 사용하고 나서야 힌트를 찾아보았다.

모든 문제는 최대 1시간의 풀이 시간을 준다. 왜냐하면 실제 코테에서 보통 3~4문제에 3시간정도를 주기 때문이다. 무작정 오래 생각하는게 전부는 아니라는 깨달음(?)으로 내가 설정한 시간이다.

역시 나같은 문제로 질문을 한 사람들이 있었다. 하지만 그 대답이 충격이였다.

b를 사용 안하셨네요! b는 빈병을 a만큼 주고서 받는 콜라의 개수입니다

... 이럴수가... 스스로 창피해지는 순간이였다. 😰

문제를 읽을때는 기억했으나, 정작 구현할때는 이를 잊어버리고 구현하였다. 모든 것은 다 핑계이고 결국 문제를 정확하게 읽지 않았다는 점. 문제 풀이의 시작은 모두 문제를 읽는 것부터이다.

코드상 딱 한줄만, 아니 b만 넣으면 되었다. 🙃

function solution(a, b, n) {
  let count = 0,
    empty = 0;
  while (n >= a) {
    const recieved = Math.floor(n / a)`* b`; // 수정 부분
    count += recieved;
    n = recieved + (n % a);
  }

  return count;
}

결론

  • 제출시 많은 케이스에서 오류가 난다면 다시 한 번 문제로 돌아가자!!

  • 사실 vscode에서 구현하는 것이였다면, 이미 b에 체크가 되었을 것이다, not used 이런 식으로... 새삼 vscode를 통한 개발 경험 개선, 생산성 향상 에 감사함을 느끼게 되었다.