Algorithm Problems

[Cos Pro 2급] 4차 1번 - 사다리타기

WakaraNai 2021. 2. 6. 15:55
728x90
반응형

문제1

 

사다리 게임은 먼저 사람 수만큼 세로줄을 긋고 한쪽 편에는 이름을 쓰고 반대쪽에는 상품 위치를 씁니다. 서로 인접한 세로줄 사이에 가로줄을 무작위로 그은 다음 세로줄을 타고 내려가면서 가로줄을 만날 때마다 가로줄로 연결된 다른 세로줄로 가는 게임입니다.

 

6명이 사다리 게임을 할 때, 몇 번째 위치에서 시작하는 사람이 상품을 타는지 알고 싶습니다. 가로줄은 항상 인접한 세로줄만 연결할 수 있으며 주어진 순서대로 위에서부터 연결합니다.

예를 들어, 아래 사다리의 가로줄은 [[1, 2], [3, 4], [2, 3], [4, 5], [5, 6]] 으로 표현합니다. 이때 1번째 위치에서 시작한 사람이 상품을 탑니다.

 

가로줄의 위치가 담긴 2차원 리스트 ladders와 상품의 위치 win이 매개변수로 주어질 때, 당첨자의 시작 위치를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

매개변수 설명
가로줄의 위치가 담긴 2차원 리스트 ladders와 상품이 있는 위치 win이 solution 함수의 매개변수로 주어집니다.
* 가로줄의 개수는 1 이상 20 이하인 자연수입니다.
* win은 1 이상 6 이하인 자연수입니다.
* 가로줄은 항상 연결할 수 있는 형태만 주어집니다.

 

 

return 값 설명
승리하는 사람의 시작 위치를 return 합니다.

 

 

예시
| ladders                                | win | return |
|------------------------------------|-----|--------|
| [[1, 2], [3, 4], [2, 3], [4, 5], [5, 6]] | 3   | 1   |

 

 

 

 

Python

def solution(ladders, win):
    ladders.reverse()
    for ladder in ladders:
        if ladder[0] == win: #왼쪽과 같으면
            win =  ladder[1] #오른쪽으로 이동
            
        elif ladder[1] == win: #오른쪽과 같으면
            win =  ladder[0] #왼쪽으로 이동

    return win
    
print(solution([[1,2],[3,4],[2,3],[4,5],[5,6]], 3))
728x90
반응형