본문 바로가기

알고리즘/BOJ33

[BOJ] 14502. 연구소 문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 주요 아이디어 굉장히 기초적인 BFS 문제이다. 기본적인 아이디어는 다음과 같다 빈 칸 중 벽을 세울 칸 3개의 좌표를 조합으로 뽑아낸다. 문제 조건 중 "무조건 3개의 벽"을 세우라고 했기 때문에 별다른 예외처리는 안해도 된다 조합 순회를 돌면서 벽을 세우고, 해당 벽을 세웠을 때 바이러스가 전파된 경우를 확인한다 바이러스 전파는 bfs 방식으로 체크한다 원본이 바뀌는 것을 막기 위해 bfs 진행 시마.. 2024. 4. 6.
[BOJ] 1260. DFS와 BFS 문제 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 주요 아이디어 기본적인 DFS, BFS 구현 문제 따로 저장하지 말고 방문할 때마다 방문 처리로 출력을 진행해주자 문제에 명시되어 있진 않으나 예시를 보고 노드가 오름차순 정렬임을 유추할 수 있음 코드 구현 (Python 3) 더보기 def dfs(graph, v, visited): visited.append(v) print(v, end=' ') # 인접.. 2024. 4. 1.
[BOJ] 10866. 덱 문제 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 주요 아이디어 덱 구현 문제이다. 큐와 거의 유사하게 구현했다! 코드 구현 (Python 3) 더보기 # 덱 ''' 큐 문제에서 메서드만 변경/추가하면 될 것 같다! 반복 입력 작성 시 sys.stdin.readline() 사용 잊지 말 것! ''' import sys input=sys.stdin.readline global f, r deque = [] # push def p.. 2022. 9. 7.
[BOJ] 10845. 큐 문제 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 주요 아이디어 이전 포스팅과 마찬가지로 단순하게 큐를 구현하는 문제이다. 코드 구현 (Python 3) 더보기 # 큐!!!!!!!!!! ''' 아까 풀었던 스택 문제랑 비슷하게 풀면 될것같다 반복 입력 작성 시 sys.stdin.readline() 사용 잊지 말 것! ''' import sys input=sys.stdin.readline global f, r queue = [.. 2022. 9. 7.
[BOJ] 10828. 스택 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 주요 아이디어 기본적인 스택 구현 문제이다. 코드 구현 (Python 3) 더보기 배열 기반 스택을 구현하고자 했다. # 스택은 전역으로 (매번 전달하기 귀찮) stack = [] def size(): print(len(stack)) def empty(): if len(stack) < 1: print(1) return 1 else: print(0) return 0 def p.. 2022. 9. 7.
[BOJ] 10816. 숫자카드 2 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 주요 아이디어 처음에 정렬하는 방법을 생각했는데 그냥 딕셔너리가 더 편한것 같다 (파이썬 한정) 주어진 숫자카드 리스트의 개수를 딕셔너리화하고, 찾아야 하는 num_list 반복문 돌리면서 딕셔너리에서 개수를 가져온다. 매번 비교하며 카운트하는 방법은 시간 초과 뜰 가능성이 높다! 코드 구현 (Python 3) 더보기 N = int(input()) # 숫자카.. 2022. 9. 7.