Algorithem/백준 PS with code

백준 #14503 - [G5] 로봇 청소기 : 구현

2023. 5. 25. 08:50
목차
  1. 문제 해석
  2. 코드
 

14503번: 로봇 청소기

첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$  둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽

www.acmicpc.net

(python3)

 

문제 해석

구현은 단순한데, 문제 해석을 직관적으로 하면 안됩니다. 작동 방식을 잘 따라가야... 주변에 1칸이라도 청소할 수 있는 곳이 있으면 일단 반시계 방향으로 90도 회전해야합니다. 바로 앞이 청소 안한 영역이더라도 직진하면 안되고, 일단 회전해야합니다.

그리고 주어지는 방향 값은 0,1,2,3 이 시계방향이고, 회전 방향은 반시계방향이니 이점도 유의해서 코딩하도록 합시다

 

구현 내용은 주석으로 달아놨습니다.

코드

def solution(input) : 
    # 입력 받기
    R,C = list(map(int,input().split()))
    r,c,d = list(map(int,input().split()))
    maps = []
    for _ in range(R) :
        maps.append(list(map(int,input().split())))
    D = [(-1,0),(0,1),(1,0),(0,-1)]

    # 로봇청소기 동작
    cnt = 0
    while True :
        if maps[r][c] == 0 : # 청소 안된 칸은 청소하기
            cnt += 1
            maps[r][c] = 2
        flag = 0
        for i in range(4) : # 주변 4칸에 빈칸 있는지만 체크
            nd = (d+i)%4
            dr,dc = D[nd]
            nr,nc = r+dr, c+dc
            if maps[nr][nc] == 0 :
                flag = 1
                break
        if flag : # 빈칸 있으면 90도 회전하고, 회전 후 앞칸이 청소 안한 칸이면 이동
            d = (d+3)%4
            dr,dc = D[d]
            nr,nc = r+dr, c+dc
            if maps[nr][nc] == 0 :
                r,c = nr,nc
                continue
            
        else : # 빈칸 없으면 후진, 벽이면 작동 정지
            dr,dc = D[d]
            r -= dr
            c -= dc
            if maps[r][c] == 1 :
                break
    print(cnt)
            
solution(input)

 

my solved.ac : 

 

solved.ac

알고리즘 문제해결 학습의 이정표 🚩 Baekjoon Online Judge 문제들의 난이도 및 티어 정보를 제공하는 사이트입니다.

solved.ac

'Algorithem > 백준 PS with code' 카테고리의 다른 글

백준 #2108 - [S3] 통계학 : 최빈값  (0) 2023.05.28
백준 #1806 - [G4] 부분합 : 두 포인터  (0) 2023.05.27
백준 #15685 - [G4] 드래곤 커브 : 구현  (0) 2023.05.24
백준 #14890 - [G3] 경사로 : 구현  (0) 2023.05.23
백준 #15683 - [G4] 감시 : 시뮬레이션, back tracking  (0) 2023.05.23
  1. 문제 해석
  2. 코드
'Algorithem/백준 PS with code' 카테고리의 다른 글
  • 백준 #2108 - [S3] 통계학 : 최빈값
  • 백준 #1806 - [G4] 부분합 : 두 포인터
  • 백준 #15685 - [G4] 드래곤 커브 : 구현
  • 백준 #14890 - [G3] 경사로 : 구현
jamong5
jamong5
데이터 엔지니어를 희망하는 개발자 지망생
jamong5
JAMONG5
jamong5
전체
오늘
어제
  • 분류 전체보기 (171)
    • Algorithem (92)
      • 백준 PS with code (64)
      • 프로그래머스 PS with code (9)
      • 알고리즘 이론 (3)
    • Languages (19)
      • Python (10)
      • Java (2)
      • C & C++ (7)
    • SQL (42)
      • 프로그래머스 MySQL with code (41)
      • MySQL (1)
    • CS (2)
    • DevOps (4)
      • Docker (1)
      • Git, GitHub (3)
    • 코드 고민 (1)
    • 도움을 받은 정보 (2)
    • 책 (4)
    • 보드 게임 일기 (1)
    • 컴퓨터 일기 (2)
    • R&D 휴지통 (0)

블로그 메뉴

  • 소개
  • 홈
  • 태그

공지사항

인기 글

태그

  • Git
  • backtracking
  • 백준
  • MySQL
  • 백트래킹
  • heapq
  • Python
  • 투포인터
  • 스택
  • 프로그래머스
  • LCS
  • 시간초과
  • 똥이
  • 구현
  • 파이썬
  • join
  • 알고리즘
  • 그래프탐색
  • SQL
  • 최소힙

최근 댓글

최근 글

hELLO · Designed By 정상우.
jamong5
백준 #14503 - [G5] 로봇 청소기 : 구현
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.