Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 이분탐색
- 2020 KAKAO BLIND RECRUITMENT
- GIT
- 투포인터
- 2021 KAKAO BLIND RECRUITMENT
- 투 포인터
- 로봇 청소기
- 2018 KAKAO BLIND RECRUITMENT
- 파이썬
- 시뮬레이션
- 구현
- 트라이
- 조합
- 2020 카카오 인턴십
- 백준
- 비트마스킹
- 최소 신장 트리
- SWEA
- 스택
- 크루스칼
- Spring
- 우선순위큐
- 백트래킹
- 프로그래머스
- 다익스트라
- 플로이드 와샬
- BFS
- 브루트포스
- 플로이드와샬
- 2019 KAKAO BLIND RECRUITMENT
Archives
- Today
- Total
개발조아
[BOJ/백준] 백준 8111 0과 1 파이썬 본문
728x90
문제 링크 : https://www.acmicpc.net/problem/8111
경우의 수가 2^100이기 때문에 단순히 BFS만으로는 절대 불가능하기 때문에 가지치기가 중요하다.
나는 도저히 방법이 떠오르지가 않아서 핵심 알고리즘들을 좀 찾아봤다.
그래서 찾은게 모듈러 연산을 통해서 하는 것이다
a%b = c 일때 d는 임의의 아무숫자이고 c 끝에 d를 붙인 숫자를 b로 모듈러 연산한 값을 e라 하고 a 끝에 d를 붙인 숫자를 b로 모듈러 연산한 값을 f라 하면 e와 f의 결과 값은 같다. 예를들어 2479%7 = 1 일때 9를 끝에 붙인다고 하면 19와 24799가 되고 각각을 다시 7로 모듈러 연산하면 같다. 19%7 = 5 24799%7 = 5 |
이 알고리즘 되로 하면 0~n-1의 숫자들 가지고 놀기 때문에 얼마 걸리지 않는다.
BFS는 1부터 넣고 시작하고 visited 배열의 경우 0번째는 원래 몫, 1번째는 tc 번호로 tc마다 구별하려고 넣었다.
from sys import stdin
from collections import deque
input = stdin.readline
tc = int(input())
visited =[['',0] for _ in range(20001)]
visited_num = 0
def solv():
n = input()
if n.count('1')+n.count('0') == len(n):
print(0)
return
else:
n = int(n)
bfs(n)
def bfs(n):
global visited
q = deque([1])
visited[1] = ['1', visited_num]
while q:
now = q.pop()
if len(visited[now][0]) == 100:
print('BRAK')
return
for num in [0,1]:
nxt = (now*10+num)%n
if nxt != 0:
if visited[nxt][1] != visited_num:
visited[nxt] = [visited[now][0]+str(num),visited_num]
q.appendleft(nxt)
else:
print(visited[now][0]+str(num))
return
for _ in range(tc):
visited_num += 1
solv()
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 백준 5430 AC 파이썬 (0) | 2021.08.10 |
---|---|
[BOJ/백준] 백준 22351 수학은 체육과목 입니다 3 파이썬 (0) | 2021.08.07 |
[BOJ/백준] 백준 22352 항체인식 파이썬 (0) | 2021.08.07 |
[BOJ/백준] 백준 3197 백조의 호수 파이썬 (0) | 2021.08.06 |
[BOJ/백준] 백준 1963 소수경로 파이썬 (0) | 2021.08.05 |
Comments