반응형
반응형
https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 난이도: solved.ac 실버 3 알고리즘 분류 백트래킹 문제 설명 1부터 N까지의 숫자를 중복 허용하여 M개 골라 나열하는 문제다 이때 나열된 수열은 총 N^M개가 된다 구현 출력할 수열을 배열 arr에 저장한다 1부터 N까지의 숫자를 for 문을 이용해 arr에 넣어주고 함수 NnM을 재귀 호출한다 NnM의 인수로 cnt라는 변수가 사용되는데, 이는 현재 배열에 저장된 수열의 길이를 의미한..
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 난이도: solved.ac 실버 3 알고리즘 분류 백트래킹 접근 방법 뒤에 나오는 수가 앞에 나온 수보다 커야 한다 따라서 last라는 변수를 두었고, 뒤에 나오는 수는 last보다 더 큰 수가 나오도록 해야 한다 M개의 for문을 사용하는 대신 재귀 함수를 이용해 구현한다 구현 find라는 재귀 함수를 만들었다 변수 num은 현재 수열의 길이를 의미하고 last는 나열된 숫자들 중 가장 마지막..
https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 난이도: solved.ac 실버 3 접근 방법 배열을 이용하면 어렵지 않게 풀 수 있다 입력받은 수들을 저장할 배열(queue)과 각 우선순위가 몇 개씩 있는지 저장할 배열(prior)을 이용한다 그리고 커서(cur)를 이용해 queue의 맨 앞 원소부터 한 칸씩 이동하며 제거할지 말지 결정한다 cur가 가리키는 문서의 우선순위가 가장 높아 제거해야 한다면 해당 문서의 우선순위 개수를 하나 감소시키고..
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은 ..