백준 알고리즘 1673 파이썬 python

은영·2022년 12월 3일
0


오늘은 오전에 브론즈2 문제를 풀었기 때문에 비슷한 수준의 브론즈2 문제를 하나 더 풀어볼까 한다. 근데 시작부터 문제가 생겼다. 입력이 여러 줄에 걸쳐서 n과 k가 나온댔는데 입력 받은 만큼 반복적으로 저장하는 걸 까먹었다... 분명 배웠을 건데... 이런... 근데 질문 검색을 보았을 때 대부분의 사람들이 while 문을 쓰고 break를 거는 것 같았다.

그리고 문제가 이해가 잘 안 갔다 도장의 개수 = 치킨 쿠폰의 수 가 아니라 도장이 k개 있을 때 = 치킨 쿠폰 1개라는 말을 이해하는데 꽤 오랜 시간 걸렸다.

그렇다는 건 치킨 쿠폰이 n개가 있을 때, 도장은 총 n*k개를 찍었다는 말이 된다. 그리고 추가로 +@개의 도장을 더 찍었을 때의 먹을 수 있는 치킨의 마리 수를 계산하라는 말...?인가 나는 문제가 이해가 안 간다. 치킨 쿠폰 n장을 가지고 있으면 치킨을 n마리밖에 못 먹는 거 아닌가 강민이가 가지고 있는 도장의 개수는 말해주지 않았지 않은가....!!!!!!!

그럴만 하다... 이 문제 브론즈 2 주제에 정답률 30%도 안 되네
모르겠다 난 이 문제를 이해할 수가 없다..............

헐 아니당 치킨 쿠폰으로 치킨을 1개 주문할 때도 도장을 하나씩 찍어주는 것이다. 그 개수로 추가로 먹을 수 있는 치킨 수까지 계산을 하는 것. 나는 코리안식 치킨 쿠폰 주문에 익숙해져서 이걸 이해를 못 했나보당 그렇다면 n*k개의 쿠폰 개수 같은 건 상관이 없다. 그렇다면 n개의 치킨을 시키고 나서 n/k 개의 치킨을 더 먹을 수 있는 것. 근데 주의할 점은 이 n/k개의 치킨을 시킬 때도 또 도장을 하나씩 찍어준다. 이거 무슨 치킨 무한 증식쇼 아닌가 이런 치킨집은 세상에 없을듯

문제 이해하는 거만 하루종일 걸렸다. 하지만 내 가장 큰 문제는 입력이 끝날 때까지만 프로그램을 돌아가게 하는 거다.

첫 번째 시도는 try-except로 EOFError가 발생하면 반복문을 종료시키는 것이다.

하지만 이도 에러가 발생하였다.
하지만 여기서 발생하는 에러 메시지는 EOFError가 아닌 ValueError이 발생한 것이다. 왜나하면 map()함수를 사용하여 int로 바꾸어주어야 하는데 input()을 통해 받은 입력값은 "" 빈 값이기 때문이다. 그래서 tryp-except로 처리할 에러는 파일의 끝에 와서 발생하는 EOFError가 아닌 ValueError을 처리할 수 있도록 바꾸어주면 오류는 더 이상 발생하지 않는다.

그렇게 수정한 코드는 아래 코드, 아래 코드를 그럼 제출하여보자


뿌앵 근데 EOFError 발생했네 그럼 얘도 try-except로 처리해버리면 안 되려나...


이렇게 바꿔서 다시 도전!


틀렸당...

왜인가 하고 다른 분들이 푼 예제를 확인해보니 아직 치킨으로 바꿔 먹지 않은 도장이 없어질 때까지 반복적으로 계산해주지 않아서였다.

그렇게 찐찐 최종적으로 수정한 코드


드디어 풀었당 그렇지만 다른 사람들 코드에 의존해서 푼 것 같아 스스로 공부한 게 없는 것 같아 아쉬운 문제 풀이였다.... 이것도 하다 보면 늘겠지ㅜㅜ

0개의 댓글

관련 채용 정보