목록전체 글 (44)
시간이 NullNull
048이라는 추억의 게임을 아는가? 2048은 한 때 유명했던 1인용 게임으로, 격자 위에서 숫자가 적힌 타일들을 밀어서 합치고 최종적으로 2048을 만들어 내는 것이 목표인 게임이다. 한번 타일을 밀 때는 상하좌우를 정해서 밀어야 한다. 방향을 정하면 격자 위에 있는 모든 타일이 그 방향으로 밀린다. 만약 어떤 타일이 밀리는 방향에 다른 타일이 있고, 두 타일에 적힌 숫자가 같다면 두 타일은 합쳐져 새로운 하나의 타일이 되고 이 타일에 적힌 숫자는 합쳐진 숫자들의 합이 된다. 이렇게 합쳐져서 만들어진 새로운 타일은 숫자가 같은 다른 타일이 밀려와도 합쳐져서는 안 된다. 만약 같은 숫자가 적힌 타일이 세 개 이상 있을 때는 헷갈리는 경우를 없애기 위해 빨리 벽에 닿게 될 타일을 먼저 민다고 생각한다. 예..
성수는 이제 프로그래밍을 시작하기로 마음 먹은 초보다. 그렇기에 프로그래밍 강좌를 통해 자신의 프로그래밍 실력을 끌어 올리려고 한다. 성수의 실력이 A라고 할 때, 수준이 M인 강좌를 시청하고 나면 성수의 실력은 (A+M)/2가 된다. 즉, 성수는 자신이 보는 강좌가 좋은 지 아닌지 판단하지 않고 그대로 강좌를 받아들이기 때문에, 실력보다 낮은 수준의 강좌를 보면 실력이 낮아질 수 있다. 현재 성수는 아직 아무런 실력이 없다. 즉 실력이 0이다. 성수는 볼 수 있는 강좌 총 N개 찾았고 시간 문제상 이 중에서 K개를 적절한 순서로 선택해 한 번씩 시청하려고 한다. 성수가 같은 강좌를 두 번 이상 보는 일은 없다고 할 때, 성수가 가질 수 있는 실력의 수치는 최대 몇인지 구하는 프로그램을 작성하라. 이 문..
앨리스와 토끼는 덧셈을 이용한 간단한 게임을 같이 하기로 했다. 먼저 어떤 양의 정수를 하나 정해 그 수로 게임을 시작한다. 둘은 서로의 차례에 인접한 두 자리를 선택하고, 이 두 자리를 선택된 두 숫자의 합으로 교체하여 상대에게 차례를 넘긴다. 예를 들어, “1234”의 십의 자리와 백의 자리를 선택하면 다음 차례에는 수가 “154”가 된다. “5678”의 십의 자리와 백의 자리를 선택하면 다음 차례에는 수가 “5138”이 된다. 이렇게 차례를 반복 하다가 자기 차례에 넘어온 수가 한 자리가 되면 그 사람이 패배하게 된다. 게임을 시작할 때의 정수가 주어진다. 앨리스가 먼저 차례를 가지고, 서로 최선을 다해 게임을 한다고 할 때 어떤 사람이 게임에서 승리하게 될 것인지 구하는 프로그램을 작성하라. 이 ..