C++) #include #include #include #define MAX_NUM 52 using namespace std; int dx[4] = { 1,0,-1,0 }; int dy[4] = { 0,1,0,-1 }; int arr[MAX_NUM][MAX_NUM]; int visited[MAX_NUM][MAX_NUM]; queue q; int main(void) { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; while (t--) { int m, n, k; cin >> m >> n >> k; while (k--) { int x, y; cin >> x >> y; arr[y][x] = 1; } int cnt = 0; for (..
C++) #include #include #define MAX_NUM 102 using namespace std; char arr[MAX_NUM][MAX_NUM]; int visited[MAX_NUM][MAX_NUM]; int dx[4] = { 1,0,-1,0 }; int dy[4] = { 0,1,0,-1 }; queue q; int main(void) { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; for (int i = 0; i > arr[i][j]; } } visited[0][0] = 1; q.push({ 0,0 }); wh..
C++) #include #include #include #define MAX_NUM 102 using namespace std; int dz[6] = { 1,-1,0,0,0,0 }; int dx[6] = { 0,0,1,0,-1,0 }; int dy[6] = { 0,0,0,1,0,-1 }; struct data { int z; int x; int y; }; int arr[MAX_NUM][MAX_NUM][MAX_NUM]; int visited[MAX_NUM][MAX_NUM][MAX_NUM]; queue q; void bfs(int h, int n, int m) { while (!q.empty()) { int z = q.front().z; int x = q.front().x; int y = q.front()..
C++) #include #include #include #define MAX_NUM 1002 using namespace std; int dx[4] = { 1,0,-1,0 }; int dy[4] = { 0,1,0,-1 }; queue q; int arr[MAX_NUM][MAX_NUM] = { 0, }; int visited[MAX_NUM][MAX_NUM]; int main(void) { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> m >> n; for (int i = 0; i < n; i++) fill(visited[i], visited[i] + m, -1); for (int i = 0; i < n; i++) { for (i..
1. 조건 - 도시 각 칸 : 빈칸 - 0 / 치킨집 - 1 / 집 - 2 - 치킨거리 : 집이랑 가장 가까운 치킨집의 거리 - 도시의 치킨거리 : 모든 집의 치킨거리의 합 2. 입력 - n : 지도 크기 - m : 살아남은 치킨집 - 지도 3. 출력 - 도시의 치킨거리 4. 알고리즘 1) 폐업에서 살아남은 치킨집 m개를 고른다. - 치킨집이 1,2,3,4,5 가 있을 때 1,2,3이나 2,3,1이나 3,1,2나 똑같다 -> 조합임 2) 집이랑 치킨집 m개중에서 가장 가까운 치킨거리를 구한다. 3) 모든 집들에 대해 2)를 수행해 도시의 치킨거리를 구한다. C++) 1. 백트래킹 #include #include #include #include #define MAX_NUM 52 using namespace..
1. 입력 - L, C (C개 중 L개 뽑기) - 공백으로 문자 주어짐 2. 출력 - L개의 문자로 이루어진 암호 출력 3. 조건 - 모음 (a, e, i , o, u) 1개 이상 - 자음 2개 이상 4. 알고리즘 - 조합으로 풀면 된다. C++) - next_permutatoin #include #include // sort, next_permutation #include #include using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(nullptr); int l, c; cin >> l >> c; vector code; vector temp; // 문자 입력받기 char ch; for (int i = 0; i..
1. 입력 - m 가로 n 세로 - b 검은색 w 흰색 2. 출력 - 다시 칠해야 하는 정사각형 개수의 최소값 3. 조건 - 체스판은 대각선끼리 색깔 같음 4. 시간복잡도 - 체스판이 최대 50x50이므로 8x8으로 잘라서 검사한다면 42*42 케이스가 있음 - 잘라낸 체스판 색깔 검사를 하는데 흰색 검은색 -> 8*8*2 - 총 시간복잡도 (42*42)*(8*8*2) 5. 풀이 - 예를 들어, 체스판 시작 (왼쪽 제일 상단)이 흰색이라 하더라도 검정색으로 시작했을 때 정사각형을 더 적게 색칠할 수 있는 경우가 있기 때문에 체스판 시작을 W,B 두가지 색 전부 테스트해야한다. C++) #include #include #define MAX_NUM 52 using namespace std; string ar..