3038ksh   2달 전

check배열은 T연산을 최소한 사용했을 때 사용 횟수입니다.


1번 방식은,

현재 확인하고 있는 칸에서 O, A, B, C 연산을 했을 때 이동되는 칸으로 (만약 이동할 수 있고, min(다음칸의 값, 현재칸의 값)일때)현재 칸의 값을 옮기고,

현재칸에서 다음칸으로 T연산을 해서 모든 이동 가능한 칸에 대해 min(다음칸의 값, 현재칸의 값+1)을 저장합니다.

그렇게 해서 마지막 칸의 연산값중 최소값을 찾아서 만약 T이하라면 출력, 아니라면 -1을 출력해줍니다.


2번 방식은,

현재 칸의 값은 지난 칸에서 올 수 있는 모든 경우 중 최소값 이므로... 식을 작성하면 이렇게 될 것 같습니다.

check[j][i] = min( check[j][i-1] , check[j-1][i-1] , check[j+1][i-1] , ( j == 20이라면 check[10~20][i-1], 아니라면 check[j/2][i-1]) , check[1~20][i-1]+1 )

그렇게 해서 마지막 칸의 연산값중 최소값을 찾아서 만약 T이하라면 출력, 아니라면 -1을 출력해줍니다.



1번 방식은 앞 -> 뒤로

2번 방식은 뒤 -> 앞으로

진행한다고 생각하면 될 것 같습니다.


왜 틀렸을까요 ㅠㅠㅠ 테스트 케이스 만들어서 돌려도 다 맞는거같은데...

3038ksh   2달 전

방법 2에서,


108번째 라인 if(j==20&&tree[j][i-1]) -> if(j==20) 으로 바꾸니까 맞았습니다!

그런데 방법 1은 도대체 뭐가 문제일까요...? ㅠㅠ

댓글을 작성하려면 로그인해야 합니다.