2024. 4. 30. 21:32ㆍ코드리뷰
공부하는허딩크 : https://www.youtube.com/live/wAItg8urY5U?feature=shared
문제가 짧다. 그래서 만만히 봤다.
처음 문제 소개시 수학적 접근보다 부르트 포스로 푸는게 더 쉽다고 한다.
일단 생각하는대로 작성해 보았다.
<첫번째 시도 : 실패>
6같은 숫자는 5 + 1 / 3 + 3이 나올 수가 있어, 5 + 1일 경우에는 출력값이 -1이고 3 + 3일 경우에는 출력값이 2이다.
나는 그걸 고려하지 못했다.
역시 실버문제네. 마냥 쉽게 볼 문제가 아니다. 정답률도 37%네.....
1시간동안 고민 끝에 그냥 구글링함.
내가 왜 이걸 못풀었지...일단 답을 보고 다시 아래와 같이 풀어봤다.
1. 일단 조건이 N <= 3임으로 1과 2는 무시할 수 있다.
조건은 5kg이 우선하고 나머지를 3kg이 만족하면 조건을 만족하고, 아니면 -1을 출력한다.
2. 처음 숫자가 5의 배수이면 3을 고려할 필요가 없다. => 3의 배수를 고려한다면 3과 5의 공통 배수일때 3이 우선시 된다.
일단 5의 배수 조건을 걸로 cnt = N // 5로 봉지의 개수를 넣자.
5의 배수면 바로 탈출해야 하니까 break.
3. 5의 배수가 아니라면 N -= 3으로 3키로 봉지를 고려해서 cnt += 1로 봉지를 카운트한다.
N -= 3을 했는데 5의 배수가 나오면 if조건문에 걸리고, 아니면 다시 N -= 3을 거쳐서 카운트가 된다.
4. 만약 N == 1일 경우 더 이상 while반복이 돌지 않지만, N이 남았기 때문에 봉지로 카운트가 안된다.
즉, cnt에 모아줬던 봉지를 다시 -1로 바꿔준다.
<중요 포인트>
1. 조건이 5kg봉지가 우선함으로 5의 배수가 나오면 무조건 5와 관련한 코드를 생각한다.
2. if다음에 무조건 elif나 else가 나와야 한다고 생각하지 말자. => 초보자에서 넘어가보자.
3. 마지막 if N == 2가 안되는 이유는 N - 3 = 2라면 N은 5가 됨으로 N이 5의 배수라면 위에 if조건에서 cnt가 됨으로 필요없다.
코드를 보면 쉬운 문제인데 1시간 동안 생각을 못한 이유가 뭘까???경험 부족으로 생각하고 많이 풀어보자.
이정도는 중요포인트만 생각했으면 풀 수 있었을 텐데 아쉽다.
'코드리뷰' 카테고리의 다른 글
[python_파이썬]백준_2587번_대표값2_풀이 (0) | 2024.04.30 |
---|---|
[python_파이썬_pass]백준_2750번_수 정렬하기_풀이 (0) | 2024.04.30 |
[python_파이썬_pass]백준_1436번_영화감독 숌_풀이 (0) | 2024.04.30 |
[★python_파이썬]백준_1018번_체스판 다시 칠하기_풀이 (0) | 2024.04.28 |
[python_파이썬]백준_19532번_수학은 비대면강의입니다_풀이 (0) | 2024.04.28 |