티스토리 뷰
반응형
https://www.acmicpc.net/problem/12100
난이도 : 골드 2
난이도에 비해 어렵지 않은 문제였습니다.
백트래킹으로 구현을 하면 풀 수 있습니다.
총 5번의 이동으로 가장 큰 수를 구해야 하므로 각 이동(상, 하, 좌, 우)을 백트래킹을 이용해 구현했습니다.
전역 변수
n = 맵의 크기
answer = 5번의 이동이 끝났을 때의 가장 큰 값
map = 게임 판
메소드
void main
입력을 받고 게임을 시작한 후 answer를 출력합니다.
(game 호출)
void game
총 5번의 동작을 합니다.
매 동작 전 백트래킹이 가능하도록 map을 copy 배열에 복사해둡니다.
동작 후 재귀가 끝났을 때 copy배열의 값을 map으로 불러와 기존 값을 복구합니다.
void move
dir의 값에 따라 동작을 달리합니다.
0 - 상, 1 - 하, 2 - 좌, 3 - 우입니다.
index는 값을 넣을 위치를 가리키고, block은 최근 블록의 수를 저장합니다.
2 2 4 0을 위로 몰아넣는 동작 과정을 그림으로 나타낸 것입니다.
void findMax
map을 순회하며 가장 큰 수를 찾아냅니다.
반응형
'문제풀이 > 백준 && 프로그래머스' 카테고리의 다른 글
[백준 5427] 불 (자바) (3) | 2020.10.08 |
---|---|
[백준 5557] 1학년 (자바) (2) | 2020.10.06 |
[백준 2252] 줄 세우기 (자바) (0) | 2020.10.02 |
[프로그래머스] 오픈채팅방 (자바) (0) | 2020.09.27 |
[백준 2493] 탑 (자바) (0) | 2020.09.26 |
댓글