오늘의 문제
https://www.acmicpc.net/problem/2615
오늘도 문제를 오랜 시간 고민하기 보다는 다른 분들의 풀이를 보고 이해했다.
다음주까지는 코테에 신경을 쓸 수가 없다 🥹
오늘 공부한 내용
- 대각선 이동에 대한 dx, dy 설정
- 방향을 (→ ↓ ↘ ↗)로 설정 : 승부가 결정되었을 경우에는 연속된 다섯 개의 바둑알 중 가장 왼쪽에 있는 바둑알의 좌표를 출력
- 오목의 위치를 for 문으로 확인하면서 다 체크
- 육목일 경우도 체크하여 걸러주어야 한다는 것
- sys.exit(0) : 한번에 프로그램 종료
아래의 페이지를 통해 공부했다.
https://velog.io/@hygge/Python-%EB%B0%B1%EC%A4%80-2615-%EC%98%A4%EB%AA%A9-Brute-Force
[Python] 백준 2615 오목 (Brute Force)
(0, 0)부터 (18, 18)까지 모든 좌표에서 방향 갯수만큼 for문을 4번 돌려 → ↓ ↘ ↗ 방향으로 쭉쭉 5칸씩을 체크! (바둑돌이 놓여있는 경우에만=즉 좌표에 저장된 값이 0이 아닌 경우에만) x, y는 현재
velog.io
해결 코드
import sys
input = sys.stdin.readline
board = []
for i in range(19):
board.append(list(map(int, input().split())))
# → ↓ ↘ ↗
dx = [0, 1, 1, -1]
dy = [1, 0, 1, 1]
for x in range(19):
for y in range(19):
if board[x][y] != 0:
focus = board[x][y]
for i in range(4):
cnt = 1
nx = x + dx[i]
ny = y + dy[i]
while 0 <= nx < 19 and 0 <= ny < 19 and board[nx][ny] == focus:
cnt += 1
if cnt == 5:
# 육목 체크
if 0 <= x - dx[i] < 19 and 0 <= y - dy[i] < 19 and board[x - dx[i]][y - dy[i]] == focus:
break
if 0 <= nx + dx[i] < 19 and 0 <= ny + dy[i] < 19 and board[nx + dx[i]][ny + dy[i]] == focus:
break
# 육목이 아니면 성공한거니까 종료
print(focus)
print(x + 1, y + 1)
sys.exit(0)
nx += dx[i]
ny += dy[i]
print(0)
나중에 꼭 다시 풀어봐야겠다 🥲
지금 다른 것들을 하느라 잠시 노력을 덜 들인 문제들은 다 체크해두고 있다..
시간 좀 지나서 다시 복습해보자....!! 다음 기수 스터디도 신청....? ㅎㅎ
'IT > 코딩테스트' 카테고리의 다른 글
[IT/코딩테스트] 99클럽 코테 스터디16일차 TIL + BOJ27961 (0) | 2025.02.10 |
---|---|
[IT/코딩테스트] 99클럽 코테 스터디15일차 TIL + BOJ15686 (0) | 2025.02.07 |
[IT/코딩테스트] 99클럽 코테 스터디13일차 TIL + BOJ2529 (0) | 2025.02.06 |
[IT/코딩테스트] 자율 코테 스터디<평일> TIL + BOJ2212 (0) | 2025.02.04 |
[IT/코딩테스트] 99클럽 코테 스터디12일차 TIL + BOJ1051 (1) | 2025.02.04 |