Conveyer Belt Robot
Last updated
Last updated
어려웠던 부분
문제 이해부터 쉽지 않았다.
구현 문제 : 문제에서 시키는 대로 쭉 따라하면 된다. 일단 필요한 자료구조/객체부터 생각해보자. 1. 내구도 값을 저장할 정수형 배열 알고리즘 내구도값 == 0인 칸 갯수 0 이하일 때까지 반복 1. 벨트, 로봇 한칸씩 회전. 내리는 위치 로봇 내린다. 벨트 회전, 내구도값 업데이트 시 주의 사항 : i,i+1에서 A[i+1] = A[i]가 되기 때문에 끝(N-1)에서 부터 시작해서 A[N-1] 값을 임시 변수에 먼저 저장해준다! =>A[0]을 저장하는 것이 아니라 A[N-1]값을 먼저 챙겨준다!
2. 먼저 벨트에 올라간 로봇부터 이동시킨다. 반복 조건 : 끝에서(로봇 배열의 길이-1)부터 시작. i-1 때문에 반복은 0보다 클 때까지. robot[i] = true; robot[i-1] = false; //i-1번째 로봇이 i번째로 옮겨가기 때문에 i-1번째는 false처리 해준다.
3. 올리는 위치에 내구도값이 0이 아니면 로봇 올린다.
1~3의 연산을 A[i]==0 이 k개 될때까지 반복한다.
벨트의 내구도값을 저장하는 배열과 로봇의 유무 저장하는 배열을 따로 만들어서 총 2개의 배열을 이용한다.
알고리즘 1. 벨트 회전 A[n-1] 값이 먼저 사라지기 때문에 A[n-1]먼저 tmp에 저장해둔다!
2. 로봇 회전 3. 로봇 이동 조건 : A[i]-1>=0(A[i]>=1) 이동하는 칸을 i번째 칸이라고 하면 robot[i] = true, robot[i-1] = false, A[i]--
근데 로봇 회전, 로봇 이동 왜 따로 하지?