본문 바로가기
  • "하나씩 기록하다보면 누군가에게 도움이 되지 않을까"
IT/알고리즘 풀이

[백준] [자바] 14503번 : 로봇 청소기

by raVineL 2021. 3. 24.
728x90

문제 출처

www.acmicpc.net/problem/14503

 

14503번: 로봇 청소기

로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어

www.acmicpc.net

 

1. 풀이 접근

  · 로봇 청소기가 청소를 함

  · 청소 한 뒤에 내가 바라보는 방향을 기준으로 왼쪽에 청소가 가능한지 체크

 

    1. 청소가 가능한가

      1-1. 청소 가능
        - 왼쪽으로 회전
        - 왼쪽으로 이동
        - 1번으로 돌아감

        - 청소한 구역의 위치를 표기하고, 지도에서 다른 숫자로 매칭

 

      1-2. 청소 불가능
        - 2번으로 이동


    2. 네 방향을 확인

      2-1. 네 방향이 다 청소가 되어 있거나, 벽으로 막혀 있는지 확인 ( or 연산 )

        - 후진 후 2번으로 돌아감

      2-2. 네 방향이 다 청소가 되어 있거나, 벽으로 막혀 있거나, 내가 바라보는 방향 뒤쪽에 벽인지 확인 ( or 연산 )
        - 종료
      2-3. 그냥 청소만 불가능
        - 청소가 불가능한 방향으로 회전하고 2번으로 돌아감.

 

 

  · 종료되었으면 전체 지도를 스캔해서 청소한 구역 갯수 확인 후 출력


2. 소스코드

github.com/Choi-JinYeong/Solve_Alg/tree/master/Solve_Algs/src/Git_BJ_14503

 

Choi-JinYeong/Solve_Alg

알고리즘 풀이. Contribute to Choi-JinYeong/Solve_Alg development by creating an account on GitHub.

github.com


3. 맺음말

  체감난이도 : 보통

  접근 방법에 대해 특별한 알고리즘이 필요하지 않아 어렵지 않지만, 문제의 순서와 로봇의 로직을 정확하게 판단하고  그것을 구현하여야 함.

 

  더욱 좋은 풀이방법이나 보완할 수 있는 부분, 또는 문제가 될 수 있는 부분들은 알려주시면 감사하겠습니다.

728x90