본문 바로가기

개발/알고리즘 풀이...13

[백준] 14502 문제 풀이 문제 www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 /* 문제 풀이 1. 배열 입력 2. 원본 배열의 값이 복사된 임시 배열을 통해서 3개의 벽을 세운다. 3. 바이러스를 퍼트린다. 4. 남아있는 빈공간의 개수를 이전에 진행했던 빈 공간의 개수와 비교해서 갱신 5. 벽을 허문다. 6. 위의 2 ~ 5의 방법을 계속 반복해서 전체 경우의 수를 다 확인했다면 계속해서 갱신된 빈 공간(0)의 개수를 출력 */ #include #include #include using .. 2021. 4. 16.
[백준] 1012번 문제 풀이 문제 www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 풀이 배열에 값을 입력받고 반복문을 돌면서 조건이 맞으면 dfs함수를 실행한다. #include using namespace std; int N, M, C; int cnt; int arr[51][51]; bool check[51][51]; int dx[4] = {0, 1, 0, -1}; int dy[4] = {-1, 0, 1, 0}; void init() { cnt = 0; for (int i = 0; i = N) c.. 2021. 4. 14.
[백준] 2667번 문제 풀이 문제 www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 풀이 1. 1001 X 1001 크기의 배열에 입력을 받는데 입력받은 값이 1과 같다면 큐에 현재 i, j값을 쌍으로 묶어서 밀어 넣는다. 2. bfs함수를 실행한다 3. bfs함수가 끝나면 현재 배열에 0이 남았는지, 토마토가 며칠에 걸쳐서 전부 익었는지를 확인한다. #include #include #include using namespace std; int n, m; int arr[1001][1001];.. 2021. 4. 12.
[백준] 11650번 문제 풀이 오랜만에 글을 쓴다. 문제 www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 설명 N개의 좌표(x, y)가 주어졌을 때 각 좌표를 다음과 같이 정렬해서 나타내는 문제 y의 좌표가 증가하는 순으로 정렬될 때 만약 y의 크기가 같다면 x의 크기가 증가하는 순으로 정렬 풀이 답은 간단하다. 11650번 문제를 풀었다면 쉽게 풀이를 생각할 수 있는 문제이다. 1. N개의 좌표를 입력받으면서 벡터에 저장한다. 2. .. 2021. 4. 11.
[백준] 4949번 문제 풀이 www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 간략 풀이 : 1. getline함수를 이용해서 공백을 포함한 문자열을 입력받음 2. 맨 처음에 해당 문자열이 '.' 한 개의 점으로만 이루어져 있는지 검사후에 종료 3. 입력받은 문자열의 길이만큼 반복문을 돌면서 각각 괄호끼리 짝이 맞는지 검사를 하는데 이 부분이 조금 복잡할 수도 있음 4. 괄호의 짝이 맞는지 검사를 하면서 초기화 한 플래그 변수를 이용해서 출력 풀이 : 먼저 주어지는 문자열로.. 2021. 3. 14.
[백준] 1764번 문제 풀이 www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 풀이 : 1. 입력으로 주어지는 n + m번의 반복문을 돌면서 문자열을 입력 2. 문자열을 입력받으면서 벡터에 문자열들을 저장 3. 저장한 벡터를 나중에 출력할 때 사전순으로 출력하기 위해서 오름차순 형태로 정렬 4. 출력을 위한 벡터를 또 만들어서 정렬된 벡터의 크기만큼 반복문을 돌면서 듣보잡을 벡터에 추가 5. 듣보잡의 수가 이미 벡터의 크기만큼 정해졌기 때문에 그 벡터의 크기를 출력하고 이전에 저장한 출.. 2021. 3. 14.