반응형
반응형
https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 난이도: solved.ac 실버 2 자료구조 힙(Heap)을 구현하는 문제다 일반 이진트리(Binary Tree)는 input이 100,000개일 때 높이(depth)가 2^100000 - 1가 될 수 있지만 (한쪽으로만 연결된 경우에) 힙은 완전 이진트리(Complete Binary Tree)라서 input이 100,000개여도 높이는 log(2)100,000 밖에 되지 ..
https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 난이도: solved.ac 실버 1 알고리즘 분류 그래프 탐색 (DFS, BFS) 구현 방법 나는 DFS로 풀어보았다 입력을 다 받은 뒤에는 2중 for 문으로 1인 위치(그림이 있는 위치)를 찾아주고 그 위치를 초기 기점으로 해서 DFS를 돌렸다 DFS 함수로 들어가기 전에 그림의 개수를 파악할 용도로 사용한 int형 변수 print를 1 증가시켜 주었다 DFS 함수 내에서는 방문할 때마다 그림의 사..
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 난이도: solved.ac 골드 5 알고리즘 종류 BFS (너비 우선 탐색) 문제 설명 하루가 지나면 익은 토마토를 기준으로 상하좌우로 인접한 토마토들이 익게 된다 익은 토마토는 1, 아직 익지 않은 토마토는 0, 빈 칸은 -1로 표시된다 아래는 예제 입력 1의 토마토가 어떻게 익게 되는지 그림으로 나타낸 것이다 익은 토마토가 있는 칸은 파란색으로 칠해주었다 위의 예제 입력 1은 ..
https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net 난이도: solved.ac 실버 4 접근 방식 1. 자릿수가 같은 수들끼리 묶는다 2. 각각을 나열해서 자릿수를 세어본다 3. 각각의 자릿수를 모두 합한다 세부 설명 예시를 들어 설명해 보겠다 1부터 54298까지의 수를 나열해 만든 수의 자릿수를 구한다고 해보자 나열하는 수의 구간을 쪼개어보자 10000 ~ 54298 까지 나열 (모두 다섯 자릿수라는 공통점이 있음) 1000 ~ 9999 까지 나열 (모두 네 자릿수) 100 ~ 999 까지 나열 (모두 세 자릿수) 10 ~ 99 까지 나열 (모두 두 자릿수) 1 ~..
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 난이도: solved.ac 실버 2 알고리즘 분류 DFS, BFS 구현 나는 BFS를 이용해 구현하였다 입력받은 size만큼의 크기인 map과 visited라는 2차원 배열을 만들었는데, 모두 calloc으로 만들어 모든 원소가 0이 되도록 해주었다 map은 배추의 위치를 표시하는 용도, visited는 방문한 배추의 위치를 표시하는 용도로 사용하였다 그리고 이중 for문을 이용해 배추의 위치를 찾아 BFS를..
https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 난이도: solved.ac 실버 5 사용 알고리즘 조합 접근 방법 조합을 활용한 문제다 다리를 놓는다는 것은 강 동쪽의 사이트 M개에서 강 서쪽의 사이트 N개로 선을 잇는다는 것인데, 이는 곧 M개에서 N개를 선택하는 경우를 말한다 경우의 수를 구하는 문제이므로 순열 또는 조합을 이용해야 할 텐데 여기서 순열이 아니고 조합인 이유는 바로 강 동쪽의 사이트에서 강 서쪽의 사이트로 다리를 놓는데 다리..