알고리즘/BOJ

백준 19236번 청소년 상어

꾸준함. 2020. 6. 15. 11:25

문제 링크입니다: https://www.acmicpc.net/problem/19236

 

19236번: 청소년 상어

첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는

www.acmicpc.net

쉬운 시뮬레이션 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. Fish 구조체를 선언한 뒤 fishes 배열에 물고기 번호, 방향, 좌표를 입력합니다.

1.1 이 때, {0, 0} 좌표에 있는 물고기는 입력받지 않고 바로 상어로 변경해줍니다.

2. fishTank 배열 같은 경우 좌표를 통해 물고기 번호를 구하기 위해 선언한 배열입니다.

3. func 재귀함수에 매개변수로 fishses 배열, fishTank 배열, 상어 정보, 그리고 {상어가 초기에 먹은 물고기 번호} 를 전달하고 아래와 같이 진행합니다.

3.1 result를 업데이트해줍니다.

3.2 물고기를 이동해줍니다. (물고기 방향 바꾸는 과정은 dirChangeCnt 변수를 참고해주시기 바랍니다.)

3.3 상어를 이동해주는데 최대 3칸을 움직일 수 있으므로 for문을 3번 돌리고 fishses와 fishTank 배열을 복사한 뒤 변경된 상어 정보를 업데이트하고 재귀함수를 호출해줍니다.

4. 재귀함수가 더 이상 호출되지 않을 때까지 3.1 ~ 3.3 을 반복해주고 result를 출력해줍니다.

 

개발환경:Visual Studio 2019

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 17471번 게리맨더링  (0) 2020.06.16
백준 17406번 배열 돌리기 4  (0) 2020.06.15
백준 19235번 모노미노도미노  (0) 2020.06.12
백준 2517번 달리기  (0) 2020.06.08
백준 17281번 야구공  (0) 2020.06.04