본문 바로가기

카테고리 없음

[코딩테스트] 기본반A 20일차

  • 문제 이름: 로봇(https://www.acmicpc.net/problem/13901)
  • 문제 유형: 구현, 시뮬레이션
  • 난이도: S1
  • 언어: Python
  • 문제 탐색하기
  • 시간 복잡도
  • 코드 설계하기
  • 시도 회차 수정사항
  • 정답 코드
import sys

R, C = map(int, sys.stdin.readline().rstrip().split())
obsNum = int(sys.stdin.readline().rstrip())
matrix = [[0]*C for _ in range(R)]
for _ in range(obsNum):
    r, c = map(int, sys.stdin.readline().rstrip().split())
    matrix[r][c] = 1
sr, sc = map(int, sys.stdin.readline().rstrip().split())
matrix[sr][sc] = 1
d = list(map(int, sys.stdin.readline().rstrip().split()))
for i in range(4):
    d[i] -= 1
dr = [-1,1,0,0]
dc = [0,0,-1,1]
pos = 0
dirSet = set()
answer = []
while( True ):
    dirSet.add(d[pos])
    nr = sr+dr[d[pos]]
    nc = sc+dc[d[pos]]
    if nr<0 or nr>=R or nc<0 or nc>=C or matrix[nr][nc] == 1:
        pos = (pos+1)%4 #다음 방향
        if d[pos] in dirSet:
            answer.append(sr)
            answer.append(sc)
            break
        else:
            continue
    else:
        dirSet = set()
        matrix[nr][nc] = 1
        sr = nr
        sc = nc
print(answer[0], answer[1])