문제 출처
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. 맺음말
체감난이도 : 보통
접근 방법에 대해 특별한 알고리즘이 필요하지 않아 어렵지 않지만, 문제의 순서와 로봇의 로직을 정확하게 판단하고 그것을 구현하여야 함.
더욱 좋은 풀이방법이나 보완할 수 있는 부분, 또는 문제가 될 수 있는 부분들은 알려주시면 감사하겠습니다.
'IT > 알고리즘 풀이' 카테고리의 다른 글
[백준] [자바] 10250번 : ACM 호텔 (0) | 2021.03.26 |
---|---|
[백준] [자바] 16234번 : 인구 이동 (0) | 2021.03.25 |
[백준] [자바] 15686번 : 치킨 배달 (0) | 2021.03.23 |
[백준] [자바] 14888번 : 연산자 끼워넣기 (0) | 2021.03.21 |
[백준] [자바] 15683번 : 감시 (0) | 2021.03.20 |
댓글