분류 전체보기
-
[Python] BOJ 2606 : 바이러스코딩테스트/백준 2024. 9. 25. 15:24
요구사항시간 제한 1초 NlogN 까지 N 메모리 제한 128MB128 *10^6 1번 컴퓨터(노드)와 연결된 컴퓨터의 수를 출력하라설계재귀의 깊이(10**7)을 설정한다.컴퓨터의 수 N개를 받는다.간선의 개수를 받는다.한 줄에 연결된 노드 쌍을 간선의 개수만큼 입력 받는다. DFS or BFS로 구현한다.visited[boolean] 으로 True 값을 카운트1번을 통해 감염된 컴퓨터의 수니깐 True의 개수에서 - 1을 한 뒤 결과값을 출력한다. import syssys.setrecursionlimit(10**7)input = lambda: sys.stdin.readline().strip()N = int(input())E = int(input())graph = [[] for _ in range(N+1..
-
[Python] BOJ 11724 : 연결 요소의 개수코딩테스트/백준 2024. 9. 25. 14:35
요구사항시간 제한 3초3 * 10^8 번 의 연산이 가능한 시간dfs 인접리스트 시간 복잡도 O(N+M)N과 M이 최대 10^5 이내라면 통과 메모리 제한 512MB방문 여부를 저장하는 리스트 visited O(N+M) 방향 없는 그래프가 주어졌을 때, 연결 요소의 개수를 구해라 설계DFS를 구현 노드의 개수 만큼 방문하지 않았으면 DFS 를 실행, 카운트 체크 구현import syssys.setrecursionlimit(10**7)input = lambda: sys.stdin.readline().rstrip()N, M = map(int, input().split())graph = [[] for _ in range(N+1)]visited = [False] * (N+1)for i in range(M): ..
-
[Python] BOJ 1780 : 종이의 개수코딩테스트/백준 2024. 9. 25. 10:32
요구사항데이터의 개수 3**7 대략 2000개시간 제한 2초 대략 N**2 까지 가능메모리제한 : 256 * 10^6 바이트 종이가 모두 같은 수로 되어 있다면 그대로 사용그렇지 않을 경우 종이를 계속 잘라 같은 숫자만 남게 한다. 위와 같이 종이를 잘랐을 때, 각 숫자별 종이의 개수를 구해라. 설계 종이의 크기를 결정할 K 를 입력 받는다.K x K 크기의 종이를(2차원 배열) 받는다.종이에 적힌 숫자의 개수를 저장할 리스트를 초기화한다.사용자 정의 함수를 만든다.초기값은 number = paper[x][y] = paper[0][0]for i in range(x, x+N), for j in range(y, y+N)만약 number != paper[i][j]사사분면에 대해 사용자 정의 함수를 실행한다.총..
-
[Python] BOJ 1992 : 쿼드트리코딩테스트/백준 2024. 9. 25. 09:14
요구사항 시간제한 2초약 2 * 10^8번의 연산이 가능 N^2까지 가능메모리 제한 128MB 128 * 10^6 바이트 저장 정수 리스트가 10^7 개라면 280메모리를 사용. 충분함.흰 점을 나타내는 0과 검은 점을 나타내는 1로 이루어진 영상(2차원 배열)에서 쿼드 트리를 이용 해 이를 압축하여 표현하자.설계색종이 문제와 유사하다. https://studyiwthme.tistory.com/148사 사분면으로 나눈다. 같은 color 인지 확인한 뒤 맞다면 return 아니라면 각 사분면에 맞게 나눈다. (자세한건 위 링크에서 먼저 색종이 문제를 풀고 오세요)분할 정복이 시작할 때, 괄호를 열고 끝날 때 닫자.구현import sysinput = lambda: sys.stdin.readline().r..
-
[Python] BOJ 2630 : 색종이 만들기코딩테스트/백준 2024. 9. 25. 08:41
요구사항시간 제한 1초 N**2 까지 ㅇㅋN 은 대략10,000 정도 따라서 걱정메모리 제한128MB - 128 * 10^6일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만드려고 한다.전체 종이가 모두 같은 색이 아니면 똑같은 크기로 N /2 등분 한다. (반복)설계사용자로부터 N을 입력 받는다. 하얀색과 파란색을 입력 받는다. 리스트컨프리헨션으로 초기화결과값을 저장할 리스트 result 초기화color= paper[x][y], 초기값은 0,0 이 들어간다.만약 color != paper[i][j] 이라면 분할한다. 1사분면x,y+N//2, N//22사분면x, y, N3사분면x+N//2, N//24사분면x+N//2, Y+N//2, N//2같다면 더 이상 분할할..
-
[Python] BOJ : 1197 최소 스패닝 트리코딩테스트/백준 2024. 9. 24. 16:22
요구사항시간 제한 1초 N이 10^6이면 O(NlogN) 까지메모리 128MB128 * 10^6 100,000,000 정도최소 스패닝 트리의 가중치를 출력한다. 설계V, E 를 입력 받는다. 정점들의 간선에 대한 가중치를 입력받아 오름차순 정렬한다. 크루스칼 알고리즘과 Union-Find 알고리즘을 사용하기 위해.자기 자신을 부모로 초기화 한다.두 정점의 부모가 같지 않을 시 두 정점을 연결한다. 두 정점의 부모가 같을 시 가중치가 더 작은 정점으로 부모를 교체한다.4, 5번을 간선의 개수만큼 반복한다. 구현V, E = map(int, input().split())edges = [list(map(int, input().split())) for _ in range(E)]parent = [i for i in..
-
[Python] BOJ 13305 : 주유소코딩테스트/백준 2024. 9. 24. 10:15
요구사항제일 왼쪽에서 제일 오른쪽으로 가는 최소비용을 구해라출발할 때, 기름은 0이다. 시간 제한 2초약 2*10^8 연산 처리 가능N^2 일 때 10^4 까지 가능. 100,000 여기서 N은 100,000까지 되니 최대 N^2 시간복잡도를 가져야 한다.메모리 제한 512MB 512 * 10^6 바이트를 의미.리스트의 크기가 대략 10^7 까지 처리 가능. 설계첫 번째는 무조건 기름을 채워야한다. 따라서 처음은 비싸도 채워야 한다. 처음 기름 채우는 값을 min_price 에 저장한다. n-1 번 만큼 for문을 돌린다.(간선의 개수)만약에 들어온 값보다 min_price이 클 때, 들어온 값을 min_price에 저장해준다.min_price * km[i] 번째를 곱한 결과를 반복해서 저장한다.구현N..
-
[Python] BOJ 1541 : 잃어버린 괄호코딩테스트/백준 2024. 9. 24. 09:31
요구사항0 ~ 9 그리고 + - 를 공백 없이 한 줄에 입력했을 때, 식에 적절히 괄호를 쳐서 최솟값으로 만들어라.설계split() 연산자를 이용해 -를 기준으로 나누어준다. 그 이유는 3 + 4 - 3 - 10 이 예시 입력으로 주어질 때 - 기준으로 나누면 최솟값이 된다. (3 + 4) - 4 - 3 - 10 -> -10구현str = input().split('-')num_list = []for i in str: plus = i.split('+') sum = 0 for j in plus: sum += int(j) num_list.append(sum)first_num = num_list[0]for i in range(1,len(num_list)): first_nu..