PC/UVa ID : 110205/10205

사설

이번 문제 역시 이해하기 어려웠다. "실시간으로 카드 섞기를 누적 하지 않고, 한번 다 섞은 후에 누적한다." 라고만 했어도 쉽게 이해 했을 텐데.

개요

52장의 카드를 주어진 방법에 따라 섞는데, 어떻게 섞였는지 출력하라는 것이다. 카드를 섞는 방법은 일명 "밑장 빼기"의 응용버전 인, "원하는 부분의 카드를 빼서 위에 쌓아 올리기" 이다. 즉, 카드의 아래서 위로 순번으로 매길때, 3번의 카드를 빼서 52번째 카드의 자리에 카드를 올려 놓는 섞기 방법이다.

여기서 중요한 점은, 실시간으로 카드 섞임을 누적하지 않고, 섞는 방법들 중 한 가지 방법으로 섞고 난 후에야 비로서 누적한다. 즉, "1번째 카드를 3번째 자리에 넣으라고 했을때, 2번째 자리가 1번째에 오지 않는다. 하지만 이런식으로 섞은 후에 카드 섞임 상태는 유지 한다." 를 뜻한다.

입력

  1. 테스트 케이스의 갯수를 정수로 입력 받는다.
  2. 공백라인을 넣는다.
  3. 섞는 방법의 갯수를 정수(100 이하)로 입력 받는다. - 난 100 이하 누지 않았음
  4. 섞는 방법의 갯수 만큼 섞는 방법을 입력 받는다. 이때 1 부터 52개의 숫자 중 중복되지 않게 52개를 입력 받는다.
  5. 첫번째 입력이 첫번째 위치에 있을 카드 입력이다.
  6. 섞는 방법의 갯수 만큼 입력 받았다면, 섞는 방법을 입력받은 순으로 아이디(정수)화 하여, 섞는 방법을 입력 받는다.
  7. 섞는 방법을 입력받으면, 섞고, 공백이 입력 될때까지 반복한다.

출력

  1. 입력의 7번째에서 공백이 입력 되었다면, 지금까지 누적시킨 카드를 출력한다.
  2. 공백을 출력한다.
  3. 테스트 케이스 만큼 입력을 받으며 출력을 반복한다.




관련링크
http://icpcres.ecs.baylor.edu/onlinejudge/external/102/10205.html

posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요

  1. Favicon of https://www.ikpil.com 농사를 짓는 게임 프로그래머 최익필 2009.11.25 03:13 신고  Addr  Edit/Del  Reply

    느낀점
    1. 모듈화를 시켜야 단위테스트가 잘된다. 이렇게 하면 디버깅이 쉬워진다.
    2. 주석을 달 때 더 신경써야겠다.