Python 연습 12: 숨겨진 공 찾기

의문


  • 교체가 완료되면 볼 최종 위치가 되는 문자 위치를 반환하는 함수를 만듭니다.

  • 설명


  • 테이블의 위치 A, B, C에 세 개의 컵이 있습니다. 시작 시 위치 B의 컵 아래에 공이 숨겨져 있습니다.


  • 두 글자로 표시되는 여러 스왑이 수행됩니다.
  • 예를 들어 위치 A와 B에서 컵을 교체하면 AB 또는 BA로 나타낼 수 있습니다.




  • cup_swapping(["AB", "CA"]) ➞ "C"
    
    cup_swapping(["AC", "CA", "CA", "AC"]) ➞ "B"
    
    cup_swapping(["BA", "AC", "CA", "BC"]) ➞ "A"
    


    내 솔루션


  • 1. 현재 위치 "B"를 초기화합니다
  • .
  • 2. 스왑 조합 목록을 반복합니다.
  • 2.1 각 스왑 조합에 대해 반복

  • 3. 볼이 스왑되었는지 확인
  • 3.1 스왑 조합에 현재 위치가 있으면 스왑됨
  • 3.2 현재 위치 업데이트
  • 3.2.1 current_position이 첫 글자와 같은 경우
  • 3.2.2 마지막 문자가 현재 위치임
  • 3.3.1 current_position이 첫 글자와 같지 않은 경우
  • 3.3.2 첫 글자가 현재 위치임

  • 4. 최종 위치 인쇄

  • def cup_swapping(swaps):  
        current_position = "B"  
        for move in swaps:  
            if current_position in move:  
                if current_position == move[0]:  
                    current_position = move[1]  
                else:  
                    current_position = move[0]  
        return current_position 
    


    타인에 의한 해결



    방법 1


  • 내 대답의 단축 버전

  • def cup_swapping(swaps):  
        current_position = "B"  
        for move in swaps:  
            if current_position in move:  
                current_position = move[1] if move[0] == current_position else move[0]  
        return current_position
    


    방법 2




    def cup_swapping(swaps, current_position="B"):  
        for move in swaps:  
            current_position = move.replace(current_position, "") if current_position in move else current_position  
        return current_position
    


  • 단지
  • 각 스왑을 반복합니다.
  • 스왑에는 두 글자
  • 가 있습니다.
  • 현재 위치가 스왑에 나타나면 해당 문자를 빈 문자열로 바꿉니다.
  • 즉, 현재 위치가 "A"인 경우 "AB"를 "A"로 바꿉니다
  • .
  • 현재 위치를 나머지 단일 문자
  • 로 업데이트합니다.

  • 현재 위치가 스왑에 나타나지 않으면 현재 위치 유지


  • 내 반성


  • 힌트 없이 문제를 푸는 건 기분 좋은 일이다. 처음에는 코드를 작성할 때 막혔고 알고리즘을 작성하여 문제를 해결하려고 하면 갑자기 생각이 훨씬 쉬워집니다. 따라서 코딩을 먼저 하기보다는 알고리즘을 먼저 작성하는 습관을 들일 것입니다. 또한 if else 문을 단축하는 새로운 방법을 배웁니다
  • .

    신용 거래



    edabit에서 발견된 챌린지

    좋은 웹페이지 즐겨찾기