그리고 아무도 없었다(?)

조회수 411회
  1. 범인=[A, B, C, D, E, F, G, H, I, J]의 리스트를
    첫번째 사람은 살리고 , 그 다음은 사람은 제거하기(반복)작업
    하면, 마지막 한 사람이 남을 때까지 출력하는 코드,
    능력자분들께 도움 청합니다.
    (단, 삭제되는 과정을 볼 수 있게 출력하고,
  2. 정렬까지 되게)

1) 출력 : 정렬 전

[A, B, C, D, E, F, G, H, I, J]
[C, D, E, F, G, H, I, J, A]
[E, F, G, H, I, J, A, C]
[G, H, I, J, A, C, E]
[I, J, A, C, E, G]
[A, C, E, G, I]
[E, G, I, A]
[I, A, E]
[E, I]
[E]  #<-범인!

2) 출력 : 정렬 후

[A, B, C, D, E, F, G, H, I, J]
[A, C, D, E, F, G, H, I, J]
[A, C, E, F, G, H, I, J]
[A, C, E, G, H, I, J]
[A, C, E, G, I, J]
[A, C, E, G, I]
[A, E, G, I]
[A, E, I]
[E, I]
[E]  #<-범인!

1 답변

  • #python3에서 작성된 코드
    people = ["A","B","C","D","E","F","G","H","I","J"]
    def do(list):
        list.append(list.pop(0)) # 맨 앞사람을 맨 뒤로 넘김
        list.pop(0) # 한 사람을 죽임
    showing = []
    while not len(people) == 1:
        do(people)
        showing = people.copy() # 보여주기에 복사
        showing.sort()  # 정렬
        print(showing)
    
    # 결과
    ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
    ['A', 'C', 'E', 'F', 'G', 'H', 'I', 'J']
    ['A', 'C', 'E', 'G', 'H', 'I', 'J']
    ['A', 'C', 'E', 'G', 'I', 'J']
    ['A', 'C', 'E', 'G', 'I']
    ['A', 'E', 'G', 'I']
    ['A', 'E', 'I']
    ['E', 'I']
    ['E']
    
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)