📌 문제 링크: https://www.acmicpc.net/problem/16955
16955번: 오목, 이길 수 있을까?
구사과와 큐브러버는 10×10 크기의 바둑판에서 오목을 하고 있다. 턴은 구사과가 먼저 갖는다. 바둑판의 상태가 주어진다. 구사과가 턴을 한 번 더 가졌을 때, 이길 수 있는지 구하는 프로그램을...
www.acmicpc.net
✅ 내 풀이(Success) :
![[BOJ_16955] 오목, 이길 수 있을까? [BOJ_16955] 오목, 이길 수 있을까?](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
🧐 Review:
1차 시도)
2차원 배열의 크기가 10 * 10으로 크지 않기 때문에 완전 탐색으로 2중 반복문을 돌면서 '.'을 'X'로 바꾸고 해당 좌표를 기준으로 상, 하, 좌, 우 그리고 대각선을 2중 반복문으로 'X'의 개수가 5개인지 체크하고, 체크가 끝나면 다시 변환했던 'X'를 '.'으로 되돌려서 계속해서 반복문을 순환하면서 정답을 찾도록 구상했다. 그런데, 2중 반복문으로 2차원 배열의 대각선과 열칼럼을 탐색할 때 인덱스 처리가 꼬여서 문제가 쉽게 풀리지 않았다.
2차 시도)
처음 시도한 방법이 내 생각대로 코드가 잘 작성되지 않아서 구글링을 통해 정답 코드를 확인했다. 글 작성 기준으로 파이썬으로 작성된 풀이들은 너무 단순하고 무작정 배열을 확인하는 방법들이라서 c++로 작성된 코드를 보면서 파이썬 코드에 맞게 위와 같이 수정했다.
위 방법은 방향벡터를 사용해서 'X'를 기준으로 상, 하, 좌, 우 그리고 대각선을 확인해서 'X'의 개수가 4개, '.'의 개수가 1개인지 확인한다. 이 경우에는 구사과의 턴에 바둑돌을 놓아 오목을 완성할 수 있기 때문에 구사과가 게임에서 승리할 수 있게 된다.
'알고리즘 문제 풀이: 파이썬 > BOJ' 카테고리의 다른 글
[BOJ_19948] 음유시인 영재 (0) | 2023.12.19 |
---|---|
[BOJ_16113] 시그널 (0) | 2023.11.23 |
[BOJ_13335] 트럭 (0) | 2023.11.19 |
[BOJ_20006] 랭킹전 대기열 (0) | 2023.11.18 |
[BOJ_20365] 블로그2 (0) | 2023.11.18 |
댓글