====== Cow Sorting ====== ===== 풀이 ===== * [[ps:problems:boj:1851]], [[ps:problems:boj:2322]], [[ps:problems:boj:2569]], [[ps:problems:boj:6223]]이 모두 동일한 문제이다. 풀이는 [[ps:problems:boj:1851]]을 참고. ===== 코드 ===== """Solution code for "BOJ 6223. Cow Sorting". - Problem link: https://www.acmicpc.net/problem/6223 - Solution link: http://www.teferi.net/ps/problems/boj/6223 Tags: [Greedy] """ import sys def main(): N = int(sys.stdin.readline()) grumpiness = [int(sys.stdin.readline()) for x in range(N)] min_grumpiness = min(grumpiness) orders = sorted(range(N), key=grumpiness.__getitem__) is_visited = [False] * N answer = 0 for i in range(N): if is_visited[i]: continue g_vals = [] cur = i while not is_visited[cur]: is_visited[cur] = True g_vals.append(grumpiness[cur]) cur = orders[cur] answer += min( sum(g_vals) + min(g_vals) * (len(g_vals) - 2), sum(g_vals) + min(g_vals) + min_grumpiness * (len(g_vals) + 1)) print(answer) if __name__ == '__main__': main() {{tag>BOJ ps:problems:boj:플래티넘_1}}