Find Missing Observation

유승선 ·2022년 5월 20일
0

LeetCode

목록 보기
43/121

정답률 42프로? 정도의 미디엄 문제이다. 오늘도 모닝루틴 처럼 문제를 찾던 와중에 높은 투표를 받아서 풀어본 문제다.

n + m 의 주사위를 던졌을때 기록을 해둔 rolls 벡터에서 n 만큼의 주사위 기록이 없다. 그렇지만 원래 벡터안에 있었던 평균을 구한 mean 값이 주어질때 n만큼 잃어버린 주사위 숫자를 벡터안에 순서와 상관없이 담으면 되고 만약에 불가능 하다면 빈 벡터를 리턴하면 되는 시나리오 기반 문제이다.

단순한 시나리오 문제로 생각할수 있겠지만 이 문제는 시나리오와 어느정도의 수학적 생각이 들어가야지 풀수있는 문제였다. 나는 원래 수학이 들어간 문제를 굉장히 어려워 하는 경향이 있는데 생각보다 잘 풀었던 문제라 풀이와 함께 내 생각정리를 적어보고 싶었다.

가장 먼저 생각했던것은 주사위를 담기 불가능한 케이스를 생각했었다. 그리고 그 케이스를 생각하는게 가장 핵심이었던 문제였을거같다.

  1. m의 기록이 담긴 주사위 기록을 구했지만 남은 n만큼의 주사위 기록을 담을 주사위가 부족할 경우 빈 벡터를 리턴해야 한다

  2. 만약에 m에 담긴 주사위 기록이 우리가 담아야할 total 보다 크다면은 더 담을 주사위가 없음으로 빈 벡터를 리턴해야한다.

  3. 주사위 값은 1~6 인데 만약에 한번이라도 0이 들어가야하는 시나리오면은 그것은 실패하는 테스트 케이스다.

이 세가지 조건하에 n만큼의 answer 벡터에서 각각 담을 평균 숫자를 구하고 % 를 해주었을때 남는 숫자만큼 각 평균에 더한다면 깔끔하게 필요한 주사위를 전부 담을수 있었다.

리트코드는 내가 실패한 테스트케이스를 줘서 고칠수 있었지만 만약 이런 환경이 아니였다면 고치는데 굉장히 애를 먹었을거같은 문제이다.

배운점:
1. Math 기반의 프로그래밍 문제는 대체로 정말 기본적인것만 물어보지만 logic을 생각하는게 더 중요하다.

  1. 시나리오 문제는 항상 작은 테스트 케이스까지 고려해야한다.
profile
성장하는 사람

0개의 댓글