답변자도 이 코드의 의미를 도저히 종잡을 수가 없습니다.
2512번 - 예산
답변자도 이 코드의 의미를 도저히 종잡을 수가 없습니다.
코드 읽어보니 대충 어떤 알고리즘으로 접근하셨는진 알 거 같네요.
게시판 쭉 읽어보시고, 반례 찾아보세요.
더 정확히 틀린 점을 야기해 드릴게요.
총 원소가 n개 있고, 총 합이 M이라고 한다면 ni님께서는 이렇게 수행하셨어요.
M/n이 avg이므로 avg보다 작거나 같은 친구들은 그냥 그대로 두고
avg보다 큰 건 감소를 시켜야 한다. 그렇기 때문에..
예를 들어서
4
110 120 140 149
519
라는 게 들어왔을 때 519/4 = 129.x이므로
110 120은 그대로 있고
140 149는. 어케 될 거냐면..
519 - 230 = 289네요. 평균보다 큰, 그러니까 초과분에 대해서도 균등하게 가겠다가 알고리즘인 거 같은데..
그게 최댓값이라는 보장이 있나요? 물론 최대한 균등하게 쪼개버린다면 최대치라는 보장은 있겠져..
문제는, 문제 조건에 이렇게 나왔단 겁니다.
임의의 상한을 설정해 놓고, 그것보다 크다면 임의의 상한으로 셋팅하고
그렇지 않다면 원래 값으로 셋팅한다.
님 알고리즘대로 수행하게 되면 110 120 144 144가 답이 되겠져..
그런데 실제로 그게 답일까요? 평균이 129보다 큰 부분에 대해서
144 144 이렇게 되는 건 문제 조건에도 어긋나 버립니다. 왜냐면 140에 대해서는
140만 가져가야지 뜬금없이 144만큼의 예산을 배졍해 버리기 때문이져.
접근 방법이 완전히 잘못된 거 같아요.
+
쉬운 문제를 풀어보면서 느낀 건
제가 실수가 엄청나게 많다는 거에요. 그런데 어쩌나요. 그것도 냉정하게 보면 실력이져..
나 실수 잦아요.. 대회 때 그 말 한다고 누가 알아주나요..?? 아니겠지요.
문제 조건을 잘 읽고, 그에 맞게 빠르게 접근하는 것도 실력이에요.
왜 틀렸는지 종잡으실 수 없으시다면, 냉정하게 잘라말해서, 아직 알고리즘을 공부하기에는 무립니다.
문제를 읽고 조건을 정확하게 해석하는 연습 먼저 하세요. 그게 안 되면
아무리 문제 많이 풀어도 소용 없습니다.
(1) 이 문제가 요구하는 것이 무엇인지 (출제 의도 파악)
(2) 그래서 주어진 조건은 뭐인데..?
(물론 수학하고 다른 건 이 사이트 같은 경우 범위 제한까지 추가된다는 겁니다.)
댓글을 작성하려면 로그인해야 합니다.
nilllilia 5년 전
ㄴ녕하세요.
의식의 흐름대로 작성하여 많이 지저분하네요.
그치만도저히 종잡을 수가 없어서 도움요청드립니다.