백준 2839번 설탕 배달 문제 해설 코드 링크
내가 처음으로 푼 백준 문제! 굳이 이 문제가 유명해서 풀었다기보다는 다이나믹 프로그래밍 연습을 좀 하고싶어서 풀게 됐다. 사실 dp나 그리디 알고리즘이 어렵긴 한데.. 코딩테스트때 가장 중요하기도 하고 막상 풀면 재밌긴 해서 백준에서 푸는 첫 문제를 dp카테고리에서 뽑게 됐다. 아무튼 설탕 배달 문제는 백준에서 다이나믹 프로그래밍 카테고리를 고르면 윗쪽에 있기도 하고 정답률도 30%대로 좀 무난해보여서 ..풀게 됐다. 풀이 고고
다이나믹 프로그래밍 카테고리에 있지만 사실 그냥 간단한 수학문제 같기도 하고..ㅋㅋㅋ
이해하기 어려운 문제도 많은데 이건 그렇진 않다. 어떤 수가 주어지면 그걸 적당히 5, 3으로 나눠주면 된다. 가령 15가 있으면 이건 5 세개, 3 다섯개로 나눌 수 있다. 그리고 이 문제에서는 최대한 적은 수만큼 나누라고 했으니 15는 5 세개로 나누는게 가장 효율적인 방식이고 답은 3이 된다. 다른 예시를 들어서, 21이 있으면 이건 5짜리 3개 3짜리 2개로 나눠서 5개 묶음으로 나누는게 답이다. 3짜리 7개로 나누는 것보다 효율적이기 때문에.
보면 알겠지만 최대한 5짜리 묶음을 많이 쓰고 나머지 값이 3으로 나눠지는지 확인하면 된다. 따라서 일단 입력받은 수를 5로 나누고, 그 나머지가 3으로 나눠서 떨어지는 값이 0이 될 때까지 5 묶음을 조금씩 풀어서 확인하면 된다. 말로 쓰기가 어려운데, 코드가 꽤 깔끔하게(딱 논리적으로 이해하기 쉽게..?ㅋㅋㅋㅋ 내기준) 나왔으니까 내 글이 이해되지 않으면 맨 윗쪽으로 가서 코드를 확인해보시길. 만약 5짜리 묶음을 아예 안 쓰고 3으로만 해도 답이 안 나온다면 (5, 3의 묶음으로 나누어떨어지지 않는다면) -1을 반환하면 된다.
깔끔하게 잘 풀림. 가끔 숏코딩을 보면 와 이렇게 짧게 짤 수도 있구나 싶지만 나는 뭐랄까 너무 짧은 코드보다는 범용성이 있으면서도 누구나 이해하기 쉬운 코드가 좋은 코드라고 생각한다. 짧으면 범용성이 있는 경향이 있다고 생각하지만 이해하기는 어려운 경우가 많기때문에. 그래도 60B짜리 코드들 보다가 내 코드를 보면 뭔가 나도 줄여볼까 싶은게 사람 마음인가보다.
'코딩테스트 > 백준' 카테고리의 다른 글
백준 14888번 연산자 끼워넣기 풀이/해설/코드 (파이썬) /Eval의 속도, dfs 안에 for문 쓰기 (0) | 2021.09.27 |
---|---|
백준 5904번 Moo 게임 풀이/코드 (파이썬) (0) | 2021.09.24 |
백준 1699번 제곱수의 합 풀이/코드 (파이썬) ('**2' 와 '*'의 차이..!) (0) | 2021.09.21 |
백준 1976번 여행 가자 문제 해설 코드(파이썬) (0) | 2021.09.02 |
백준 9205 맥주 마시면서 걸어가기 문제 해설 (파이썬) (0) | 2021.09.02 |