알고리즘 110

[Python][백준] 1987. 알파벳 / 백트래킹,DFS (G4)

🔗링크 :   https://www.acmicpc.net/problem/1987🗒️파이썬 코드 풀이R,C = map(int,input().split())lst = []for i in range(R): tmp = list(input()) lst.append(tmp)di,dj = [0,1,0,-1],[1,0,-1,0]alphabet = [0] * 26alphabet[ord(lst[0][0])-65] = 1mx = 0def dfs(i,j,count): global mx mx = max(mx,count) for k in range(4): ni,nj = i+di[k],j+dj[k] if 0 1. BFS를 먼저 생각해보았지만, 알파벳 체크 부분이 안돼서 DFS..

[Python][백준] 2661. 좋은수열 / 백트래킹 (G4)

🔗링크 :   https://www.acmicpc.net/problem/2661🗒️파이썬 코드 풀이N = int(input())def check(lst): for i in range(1,len(lst)//2+1): # 몇 개씩 확인 할 것인지 for j in range(len(lst)-i): if lst[j:j+i] == lst[j+i:j+i+i]: return False return True mn = 1e100def dfs(n,lst): # return -1로 상위 호출에서 다른 경로 탐색 제어 if not(check(lst)): return -1 global mn if ..

[Python][백준] 6603. 로또 / 백트래킹,재귀,조합 (S2)

🔗링크 :   https://www.acmicpc.net/problem/6603🗒️파이썬 코드 풀이def dfs(n,idx): if n == 6: print(*rs) return for i in range(idx,K): rs.append(lst[i]) dfs(n+1,i+1) rs.pop()while True: lst = list(map(int,input().split())) K,lst = lst[0],lst[1:] rs = [] if K == 0 : break dfs(0,0) print() 1. Itertools로 간단하게 풀 수 있지만, 라이브러리를 배제하고 풀어보자. 2. 흔한 백트래킹..

[Python][백준] 1449. 수리공 항승 / 정렬,그리디(S3)

링크🔗https://www.acmicpc.net/problem/1449🗒️파이썬 코드 풀이N,L = map(int,input().split())lst = list(map(int,input().split()))lst.sort()start = lst[0]-1end = start + L count = 1for i in range(N): if lst[i]  1. 입력받은 lst를 정렬 해준다. 2. Start와 end의 범위를 만들어주고, 범위를 갱신하는 방향으로 간다. 3. 반복문에서 lst[i]가 Start와 end의 범위 내외면 continue,lst[i]가 Start와 end의 범위 밖이면 범위 초기화 및 count + 1   🗒️내 풀이 코드from collections import dequ..

[Python][백준] 7562. 나이트의 이동/ BFS,그래프 탐색(S1)

링크🔗https://www.acmicpc.net/problem/7562🗒️파이썬 코드 풀이from collections import dequeT = int(input())for _ in range(T): I = int(input()) start_x,start_y = list(map(int,input().split())) end_x,end_y = list(map(int,input().split())) chess = [[-1]*I for _ in range(I)] nights = [[-2,-1],[-2,1],[2,1],[2,-1],[-1,2],[1,2],[-1,-2],[1,-2]] def dfs(i,j): q = deque([[i,j]]) ches..

[Python][백준] 1931. 회의실 배정/ 그리디,정렬(S1)

링크🔗https://www.acmicpc.net/problem/1931🗒️파이썬 코드 풀이N = int(input())lst = []for _ in range(N): start,end = map(int,input().split()) lst.append((start,end))lst.sort()rs_lst = [lst[0]]for i in range(1,N): if rs_lst[-1][1] > lst[i][0]: if rs_lst[-1][1] > lst[i][1]: rs_lst.pop() rs_lst.append(lst[i]) elif rs_lst[-1][1]  1. 먼저 마구잡이의 입력을 (strart 기준)정렬해준다.  2. 비..

[Python][백준] 2589. 보물섬 / 브루트포스,BFS (G5)

링크🔗https://www.acmicpc.net/problem/2589🗒️파이썬 코드 풀이from collections import deque import syssys.setrecursionlimit(10**6)input = sys.stdin.readlineN,M = map(int,input().split())graph = [list(input().strip()) for _ in range(N)]visited = [[-1] * M for _ in range(N)]ans = -1di,dj = [0,1,0,-1],[1,0,-1,0]def bfs(i,j): global ans visited = [[-1] * M for _ in range(N)] visited[i][j] = 0 q = ..