Search
Duplicate

돌 그룹

주차
23
문제번호
12886
언어
Python
티어
골드
유형
BFS
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Memo

로직 설명

다음 이동할 부분을 check_next 함수를 통해 받아옵니다.
방문한 부분을 set으로 표현했습니다.

Code

제출 날짜

@6/11/2021
import sys import copy from collections import deque from itertools import permutations A, B, C = map(int, sys.stdin.readline().split()) visited = set() q = deque() def check_next(li): s = [] if (li[0] != li[1]): if (li[0] > li[1]): s.append((1, 0)) else: s.append((0, 1)) if (li[1] != li[2]): if (li[1] > li[2]): s.append((2, 1)) else: s.append((1, 2)) if (li[2] != li[0]): if (li[2] > li[0]): s.append((0, 2)) else: s.append((2, 0)) return (s) def check_same(li): if (li[0] == li[1] == li[2]): return (1) return (0) visited.add((A, B, C)) q.append([A, B, C]) if (check_same([A, B, C])): print(1) exit(0) while q: li = q.popleft() next_list = check_next(li) for i in range(len(next_list)): tmp = copy.deepcopy(li) small_index, big_index = next_list[i] tmp[big_index] = tmp[big_index] - tmp[small_index] tmp[small_index] += tmp[small_index] fl = 0 for a,b,c in list(permutations(tmp, 3)): if (a,b,c) in visited: fl = 1 break else: visited.add((tmp[0], tmp[1], tmp[2])) if (fl): continue if (check_same(tmp)): print(1) exit(0) q.append(tmp) print(0)
Python
복사