1514번 - 자물쇠
저는 문제를 패턴 형식으로 생각했고, 패턴이 같은 경우와 패턴이 다른 경우로 나누어서 문제를 풀었어요.
1. 먼저 현재상태 패턴과 목표상태 패턴이 모두 같은 경우 -> 다 돌려주면 됌 (ex. 444와 555는 일치)
2. 패턴이 다를 경우
그중 2개의 패턴이 일치할 경우
1) 2번째 패턴과 3번째 패턴이 일치하는 경우(ex. 123과 467의 경우) -> 넘어간다. 왜냐면 다음 수를 합쳤을 때, 234랑 678이면 한번에 돌릴 수 있고, 아니어도 2-2)으로 돌려주면 되기에.
2) 1번째 패턴과 2번째 패턴이 일치하는 경우(ex. 237과 678의 경우) -> i번째와 i+1번째의 현재상태를 목표상태로 바꿔준다.
3) 1번째 패턴과 3번째 패턴이 일치하는 경우(ex. 135와 175의 경우) -> i번째와 i+2번째의 현재상태를 목표상태로 바꿔준다.
를 N-2번 돌리고
현재상태와 목표상태가 일치하지 않는 디스크들을 한번씩 돌려주었는데요,
예제도 다 맞고 직접 만든 예제도 다 맞는데 어디에서 반례가 생기는지 궁금해서 질문 올려요!
5
11111
23432
3이 정답입니다. 이 코드는 4를 출력하네요
댓글을 작성하려면 로그인해야 합니다.
pinkish15 7년 전
저는 문제를 패턴 형식으로 생각했고, 패턴이 같은 경우와 패턴이 다른 경우로 나누어서 문제를 풀었어요.
1. 먼저 현재상태 패턴과 목표상태 패턴이 모두 같은 경우 -> 다 돌려주면 됌 (ex. 444와 555는 일치)
2. 패턴이 다를 경우
그중 2개의 패턴이 일치할 경우
1) 2번째 패턴과 3번째 패턴이 일치하는 경우(ex. 123과 467의 경우) -> 넘어간다. 왜냐면 다음 수를 합쳤을 때, 234랑 678이면 한번에 돌릴 수 있고, 아니어도 2-2)으로 돌려주면 되기에.
2) 1번째 패턴과 2번째 패턴이 일치하는 경우(ex. 237과 678의 경우) -> i번째와 i+1번째의 현재상태를 목표상태로 바꿔준다.
3) 1번째 패턴과 3번째 패턴이 일치하는 경우(ex. 135와 175의 경우) -> i번째와 i+2번째의 현재상태를 목표상태로 바꿔준다.
를 N-2번 돌리고
현재상태와 목표상태가 일치하지 않는 디스크들을 한번씩 돌려주었는데요,
예제도 다 맞고 직접 만든 예제도 다 맞는데 어디에서 반례가 생기는지 궁금해서 질문 올려요!