코딩테스트/SWExpertAcademy

Ladder1 Python(SW Expert Academy, SWEA)

멍토 2020. 6. 5.

난이도 : D6

문제번호 : 1267

문제 주소 및 출처입니다.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&categoryId=AV14ABYKADACFAYh&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

점심 시간에 산책을 다니는 사원들은 최근 날씨가 더워져, 사다리 게임을 통하여 누가 아이스크림을 구입할지 결정하기로 한다.

김 대리는 사다리타기에 참여하지 않는 대신 사다리를 그리기로 하였다.

사다리를 다 그리고 보니 김 대리는 어느 사다리를 고르면 X표시에 도착하게 되는지 궁금해졌다. 이를 구해보자.

아래 <그림 1>의 예를 살펴보면, 출발점 x=0 및 x=9인 세로 방향의 두 막대 사이에 임의의 개수의 막대들이 랜덤 간격으로 추가되고(이 예에서는 2개가 추가됨) 이 막대들 사이에 가로 방향의 선들이 또한 랜덤하게 연결된다.

X=0인 출발점에서 출발하는 사례에 대해서 화살표로 표시한 바와 같이, 아래 방향으로 진행하면서 좌우 방향으로 이동 가능한 통로가 나타나면 방향 전환을 하게 된다.

방향 전환 이후엔 다시 아래 방향으로만 이동하게 되며, 바닥에 도착하면 멈추게 된다.

문제의 X표시에 도착하려면 X=4인 출발점에서 출발해야 하므로 답은 4가 된다. 해당 경로는 별도로 표시하였다.

한 막대에서 출발한 가로선이 다른 막대를 가로질러서 연속하여 이어지는 경우는 없다.

입력

입력 파일의 첫 번째 줄에는 테스트 케이스의 번호가 주어지며, 바로 다음 줄에 테스트 케이스가 주어진다.

총 10개의 테스트 케이스가 주어진다

출력

#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 도착하게 되는 출발점의 x좌표를 출력한다.

예시

입력 출력
홈페이지 참조 홈페이지 참조

2. 문제풀이

어디위치에서 출발했을때 목표지점(2가 적인곳)으로 갈까 하는 문제이다.

그래서 나는 2가 적힌곳에서 출발했다.

아래서 위로 올라가며(y를 감소) 체크했다.

이동할때 자기가 어디서 왔는지 체크하지 않으면 좌우를 계속 이동하는 무한루프에 빠질수 있기때문에

어디로 이동했는지 표시하는 move변수를 추가하였다.

이동완료후 마지막에 가리키고있는 x좌표가 우리가 출발해야하는 좌표가 된다.


3. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#1210 Ladder1
 
= 10
for t in range(T):
    test = int(input())
    N = 100
    ladder = [list(map(int, input().split())) for _ in range(N)]
    d_y = N-1
    d_x = ladder[N-1].index(2)
    move = 0
    while d_y > 0:
        if (move == 0 or move == 1and d_x > 0 and ladder[d_y][d_x-1]:
            d_x -= 1
            move = 1
        elif (move == 0 or move == 2and d_x < N-1 and ladder[d_y][d_x+1]:
            d_x += 1
            move = 2
        else:
            d_y -= 1
            move = 0
    print("#{} {}".format(test, d_x))

댓글

💲 광고입니다.