Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[프로그래머스 - Lv. 1] 동영상 재생기 #8

Merged
merged 1 commit into from
Nov 24, 2024

Conversation

BangDori
Copy link
Contributor

문제

Type Info
Platform 프로그래머스
Level Level. 1
Link https://school.programmers.co.kr/learn/courses/30/lessons/340213?language=javascript

풀이

  • isSkipPos: 현재 시간이 오프닝 스킵 가능 시간인지 확인하는 메서드
  • convertTimeToSeconds: MM:SS 문자열을 n초로 변환해주는 메서드
  • convertSecondsToTime: n초를 MM:SS 문자열로 변환해주는 메서드

우선 문제 해결을 위해 3가지 메서드를 만든 후 구현하였습니다. 'MM:SS'를 x초로 변환한 이유는 문자열로 주어진 시간을 쉽게 비교하기 위함입니다.

  1. 비디오, 시작, 끝, 현재 시간을 넘버 타입으로 변환한다.
  2. 만약 현재 시간이 오프닝 스킵 가능시간대라면 오프닝이 끝나는 위치로 이동한다.
  3. 커맨드 배열을 순회한다.
    • 3-1. 커맨드가 prev라면, 현재 위치 - 10한다. 이때 현재 위치는 음수가 될 수 없기 때문에 Math.max를 적용한다.
    • 3-2. 커맨드가 next라면, 현재 위치 + 10한다. 이때 현재 위치는 비디오의 길이보다 클 수 없기 때문에 Math.min을 적용한다.
    • 3-3. 만약 현재 시간이 오프닝 스킵 가능시간대라면 오프닝이 끝나는 위치로 이동한다.
  4. 현재 시간을 MM:SS으로 변환하여 반환한다.

어려웠던 점

프로그래머스, 리트코드와 같이 비하인드 테스트를 진행하는 경우, 테스트 1~2개가 통과되지 않았을 때 반례를 발견하는데 너무 오랜 시간이 걸리는 것 같습니다. 실제로 해당 문제도 난이도가 높지 않았지만 3개의 테스트가 통과되지 않았고, 이러한 반례를 발견하는데 10분 이상의 시간을 소요한 거 같습니다.

혹시 리뷰어님은 어떠한 문제가 주어졌을때 반례를 먼저 찾는 스타일이신가요? 아니라면 저와 같은 상황속에서 반례를 발견하는 방법이 따로 있으신가요?

알게된 점

  • 알게된 점이라기 보다는 문제 풀면서 느낀점인데 메서드를 최소한의 기능 단위로 만들고, 각 메서드가 하는 역할을 주석으로 추가해주는게 확실히 도움이 되는 게 느껴지는 거 같네용

@asuan99
Copy link
Contributor

asuan99 commented Nov 17, 2024

문제의 요구 사항과 더불어, 추가적으로 시간 단위를 확장한다고 해도, 같은 방식으로 포맷만 확장한다면, 확장성을 고려하기 편하겠네요. 추가적으로 시간을 확장한다면, 클래스를 통해 이를 관리하면, 형상 관리를 하는 데 용이한 방식이 될 수 있겠네요.

질문 주신 반례를 찾는 과정은 저같은 경우에는 작성한 코드에서 조건문을 우선적으로 파악합니다. 조건문을 벗어나는 다른 사례들을 파악하고, 문제에서 제공하는 제약사항을 판단합니다. 이런 경우에서 거의 80% 정도의 반례를 해결할 수 있게 되더군요. 추가적으로 여러 조건문에 해당하는 사례들을 종합적으로 고려했을 때, 반례를 찾기 용이했습니다.

@BangDori
Copy link
Contributor Author

BangDori commented Nov 17, 2024

질문 주신 반례를 찾는 과정은 저같은 경우에는 작성한 코드에서 조건문을 우선적으로 파악합니다. 조건문을 벗어나는 다른 사례들을 파악하고, 문제에서 제공하는 제약사항을 판단합니다. 이런 경우에서 거의 80% 정도의 반례를 해결할 수 있게 되더군요. 추가적으로 여러 조건문에 해당하는 사례들을 종합적으로 고려했을 때, 반례를 찾기 용이했습니다.

이 방법은 고려해보지 못했는데, 좋은 방법인 것 같아요. 다음에도 만약 히든 케이스에서 Fail이 발생한다면, 이 방법을 적용해서 확인해봐야겠네요! 감사합니다.

@github-actions github-actions bot merged commit 15915e7 into main Nov 24, 2024
2 checks passed
@github-actions github-actions bot deleted the bangdori/video-regenerator branch November 24, 2024 01:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants