C++ 86

백준 16637번 괄호 추가하기 ( C++ )

문제https://www.acmicpc.net/problem/16637 해설조금 특수한 경우의 combi함수 사용연산자 2개 안에서의 순서가 정해져있음 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include bits/stdc++.h>using namespace std; int n;int ret = INT_MIN;string line;vectorint> num_list;vectorchar> oper_list; int cal(int a, int b, char c){  if (c == '+')    return a + b;  else if (c == '-')    return a - b;  else..

백준 12869번 뮤탈리스크 ( C++ )

문제 https://www.acmicpc.net/problem/12869 12869번: 뮤탈리스크 1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다. www.acmicpc.net 해설 3차원 길찾기 문제라고 생각하면 조금 더 쉬워지는 문제 중복되는 경우에 대한 예외처리는 꼭 해주자 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58..

백준 4179번 불! ( C++ )

문제 https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 해설 설명이 부족했던 문제.. 불이 여러개라는 점을 잘 파악해야하며 정해진 맵 밖으로는 불이 퍼지지 않는다는점에 유의해서 코드를 작성해야함 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4..

백준 16234번 인구 이동 ( C++ )

문제 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 해설 완탐으로 해결하는 간단한 문제 dfs의 실행 횟수보다는 인구이동이 발생했는지를 체크하는 변수가 있었으면 더 깔끔했을듯 하다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 4..

백준 2589번 보물섬 ( C++ )

문제 https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 해설 (50*50)* (50*50)의 경우의 수 이므로 1000만 이하이기 때문에 모든 정점에 대해 bfs를 돌며 최단거리 구하기 이때 첫 시작점을 1로 설정해줘야 첫 시작점으로 돌아가는 경우를 막을 수 있음 ( 결과에서 1 빼주기) 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3..

백준 15686번 치킨 배달 ( C++ )

문제 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 해설 완탐 / 백트래킹 문제 조합 함수만 잘 만들면 어렵지 않은 문제 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 5..

백준 17298번 오큰수 ( C++ )

문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 해설 2중 for문을 이용할 경우 시간초과가 발생 (n값이 큼) stack을 사용하여 시간문제 해결 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include using namespace std; int n, mp[1000004], ret[1000004], mn; stack s; int main() {..

백준 1068번 트리 ( C++ )

문제 https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 해설 트리를 이해하고 있는지 묻는 간단한 문제 1. 루트노드가 0이 아닐때 2. 루트노드가 삭제될때 3. 루트노드만 남을때 이 경우만 잘 고려하면 되는 문제 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 ..

백준 2636번 치즈 ( C++ )

문제 https://www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 해설 탐색 -> 1을 만날시 해당 값을 변경후 탐색을 멈추도록 구현 bfs / dfs 둘다 가능 => dfs선택 (bfs선택시 메모리 초과 조심) 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52..