브루트포스 4

[백준]17281_야구_#시뮬레이션#완탐

* 베이스상태를 list의 요소로( 1루:base[0], 2루:base[1], 3루:base[2] )로 했을때는 시간초과. * 베이스상태를 1루는 a, 2루는 b, 3루는 c 로 바꿔주면 통과 ​ 1. 베이스를 리스트로(시간초과) from itertools import permutations inning=[] n=int(input()) for _ in range(n): inning.append(list(map(int,input().split()))) permu=list(permutations([i for i in range(1,9)],8)) ans=0 #각 경우 확인 for case in permu: nowCase=list(case) nowCase.insert(3,0) nowCase=tuple(nowCa..

알고리즘/구현 2020.06.18

[백준]1941 소문난칠공주

1.풀이 [백준]1035 조각움직이기 (https://sosoeasy.tistory.com/39) 와 비슷한 문제이다. (1) 모든 경우의 수를 조합으로 구한다 (2) (1)에서 구한 경우가 임도연파(Y)가 4명이상인지 확인한다. (3) 4명이상이면 bfs를 통해서 연결되어있는지 확인한다. - 소스코드1 : dfs를 이용하여 연결여부 확인 - 소스코드2 : bfs를 이용하여 연결여부 확인 -> 내생각엔 이게 더 쉽다. * 이런류의 문제를 백트래킹으로 생각하면 조건 처리가 힘들어지는 경우가 많다. 완전탐색으로 보이는 문제는 깔끔하게 순열, 조합으로 풀 수 없을까 고민하는 자세가 필요하다. 2. 소스코드 (1) 소스코드1 (dfs를 이용) from itertools import combinations dR=..

알고리즘/구현 2020.06.13

[백준]1175 배달

구글링 해보니 4차원 dp를 이용해서 푼사람들이 많았다. 나는 안똑똑해서 dfs를 이용하여 풀었다. 1. 풀이 [백준]4991 로봇청소기(https://sosoeasy.tistory.com/24) 문제와 유사하다. 아래의 순서를 따른다. (1) 현재위치에서 남아있는 모든 C까지의 거리를 bfs를 통해서 구한다. (2) (1)에서 구한 모든 경우에 대해서 해당 점을 시작위치로 하여 dfs를 한다. 2. 소스코드 INF=9876543210 from collections import deque dR=(-1,0,1,0) dC=(0,-1,0,1) N,M=map(int,input().split()) L=[] for i in range(N): L.append(list(input())) def bfs(case,q,vi..

알고리즘/search 2020.06.13

[백준]1035 조각움직이기

1.풀이 (1) 25개의 위치에 n개의 조각을 둘 수 있는 모든 경우의 수를 구한다 (조합을 이용, n은 최대 5이므로 총 횟수는 최대 25C5=53130) (2) (1)에서 구한 모든 경우에 대해 해당경우가 연결되어 있는 상태인지 구한다 (BFS를 이용한다) (3) 연결되어 있다면 원래상태에서 해당경우를 만들 수 있는 최소상태를 구한다. (각 조각에 고유번호를 매기고, 순열을 이용하여 모든 경우를 확인한다.) 2. 소스코드 from itertools import combinations,permutations from collections import deque dR=[0,0,-1,1] dC=[1,-1,0,0] INF=9876543210 def calDist(A,B): return abs(A[0]-B[0..

알고리즘/구현 2020.06.12