알고리즘/백준 문제풀이

[Python/BOJ] 백준 2615 오목_구현

개발자 덕구🐾 2022. 9. 26. 17:06
728x90

 

 

 

처음에 구현은 어떻게 했는데 세부적인 내용에서 틀렸나보다..

결국 구글링으로 답을 찾아봤다.

내가 아직 많이 부족하구나..

 

 

 

방향은 4개다. 8개가 아니고

왜냐하면 시작하는 좌표중 왼쪽, 위를 구하라고 했으므로 왼쪽, 위부터 시작하는 방향만 보기 때문이다. 

 

 

 

1. 만약 1또는 2를 찾았다면 cnt 를 1로 해서 탐색을 시작한다.

2. while 문으로 좌표안에 있는지 같은지 여부를 파악하며 계속 진행한다.

3. 만약 5개가 되었다면 6목인지 아닌지 판변한다.

4. 만약 6목이면 continue

5. 6목이 아니라면 값과 좌표를 찍고 문제를 끝낸다. 

 

 

 

코드 : 

dx = [0,1,1,-1]
dy = [1,0,1,1]

        
if __name__=="__main__" :
    n = 19
    
    mp = [list(map(int,input().split())) for _ in range(n)]
    for i in range(n) :
        for j in range(n) :
            if mp[i][j] > 0 :
                for dir in range(4) :
                    x,y = i + dx[dir], j + dy[dir]
                    cnt = 1
                    while 0<=x<n and 0<=y<n and mp[i][j] == mp[x][y] :
                        cnt +=1 
                        if cnt == 5  :
                            if 0<=x + dx[dir]<n and 0<=y + dy[dir]<n and mp[x + dx[dir]][y + dy[dir]] == mp[i][j] : continue 
                            if 0<=i - dx[dir]<n and 0<=j - dy[dir]<n and mp[i - dx[dir]][j - dy[dir]] == mp[i][j] : continue 
                            print(mp[i][j])
                            print(i+1,j+1)
                            exit(0)
                        x,y = x + dx[dir], y + dy[dir]
    print(0)
반응형