[BOJ 2447(S1) 리뷰] 반복되는 패턴이 크기가 계속 커지는 경우이므로 재귀를 이용해 해결했다. #include #include #include #include using namespace std; char table[2200][2200]; int n; void printStar(int x, int y) { for (int i = y; i < y + 3; i++) table[x][i] = '*'; table[x + 1][y] = '*'; table[x + 1][y+1] = ' '; table[x + 1][y + 2] = '*'; for (int i = y; i < y + 3; i++) table[x+2][i] = '*'; } void func(int n, int x, int y) { if (n <..
[BOJ 1629(S1) 리뷰] 쉬워보이지만 정답률이 낮은것엔 이유가 있다. 최대값이 21억이므로 21억을 곱하는 연산을 한다면 당연히 오버플로우가 생긴다. 이 문제는 재귀를 통해 해결해야한다. x^16은 x^8 * x^2과 같음을 이용해야 한다. #include #include using namespace std; long long int f(int A, int B, int C) { if (B == 1) return A % C; long long int val = f(A, B / 2, C); val = val * val%C; if (B % 2 == 0) return val; return val * A%C; } int main(void) { cin.tie(0); ios::sync_with_stdio(0)..
입력 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있는 곳으로는 이동할 수 없다. 시작점과 도착점은 항상 평지이다. W와 H는 1이상 200이하의 자연수이고, K는 0이상 30이하의 정수이다. 출력 첫째 줄에 원숭이의 동작수의 최솟값을 출력한다. 시작점에서 도착점까지 갈 수 없는 경우엔 -1을 출력한다. [BOJ 1600(G5) 리뷰] 푸느라 혈압올랐던 문제.. 일단 첨에 문제 잘못이해하고 삽질 1시간 메모리 초과나서 +1시간 100%에서 틀렸다고 나와서 +1시간.. 거의 3시간이 걸렸고 결국 경계조건에 대해 예외처리를 해주고나서야 정답처리가 되었다. ..
입력 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 가로, 세로의 크기는 각각 50이하이다. 출력 첫째 줄에 보물이 묻혀 있는 두 곳 사이를 최단 거리로 이동하는 시간을 출력한다. [BOJ 2589(G5) 리뷰] L은 땅이고 W는 바다이다. 바다로는 이동할 수 없으며 땅으로만 다닐 수 있다. 각 육지사이의 거리가 최대가 될때 그 두개의 육지에는 보물이 묻혀있다고 한다. 이때 그 육지사이의 거리가 최대가 되는 거리가 몇인지 출력하면 된다. 완전탐색을 이용해 풀었다. 존재하는 모든 육지에대해서 BFS를 수행하여 가장 거리가 멀때를 기록하고 존재하는 모든 육지에대..
입력 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻이다. A와 B가 친구이면, B와 A도 친구이며, A와 B가 같은 경우는 없다. 친구 관계는 중복되어 들어올 수도 있으며, 친구가 한 명도 없는 사람은 없다. 또, 모든 사람은 친구 관계로 연결되어져 있다. 사람의 번호는 1부터 N까지이며, 두 사람이 같은 번호를 갖는 경우는 없다. 출력 첫째 줄에 BOJ의 유저 중에서 케빈 베이컨의 수가 가장 작은 사람을 출력한다. 그런 사람이 여러 명일 경우에는 번호가 가장 작은 사람을 출력한다. [BOJ 1389(S1) 리뷰] 입력으로 친..
[BOJ 3055(G5) 리뷰] 이전에 풀었던 불! 문제와 비슷한 유형이다. 그때 썼던 코드를 거의 그대로 가져다 썼다. 먼저 물에대해 BFS를 수행하고 고슴도치에 대해 BFS를 수행하면 된다. #include #include #include #include #include #include #include #include #include using namespace std; #define X first #define Y second string board[1002]; int dist[1002][1002]; int dist2[1002][1002]; int dx[4] = { 1,0,-1,0 }; int dy[4] = { 0,1,0,-1 }; int main(void) { cin.tie(0); ios::syn..
[BOJ : 13913(G4) 리뷰] 처음엔 접근방법이 어려웠다. 동생을 찾는것까지는 쉬운데 최단거리까지의 경로를 출력해야 한다. 현재 노드가 어떤 노드로부터 왔는지 기록하면 된다는 힌트를 보고 풀었다. BFS수행할때마다 이전노드를 기록하고, 마지막에 스택에 넣어 출력했다. #include #include #include #include #include #include #include #include #include using namespace std; int dist[200002]; int parent[200002]; int main(void) { cin.tie(0); ios::sync_with_stdio(0); int n, k; cin >> n >> k; queue Q; fill(dist, dist ..
[BOJ 6593(G4) 리뷰] 이전에 풀었던 토마토 문제와 굉장히 비슷하다. 3D배열을 이용해 풀면된다. #include #include #include #include #include #include #include #include #include #include using namespace std; #define X first #define Y second char board[32][32][32]; int dist[32][32][32]; int dx[6] = { 1,0,-1,0,0,0 }; int dy[6] = { 0,1,0,-1,0,0 }; int dz[6] = { 0,0,0,0,1,-1 }; int main(void) { cin.tie(0); ios::sync_with_stdio(0); whil..
[BOJ 5014(G5) 리뷰] 강호씨가 엘리베이터를 타고 특정층에 가려고 한다. 현재 강호씨의 위치와 강호씨가 가고자 하는 층이 주어지고 U와 D값이 주어지는데 위로 가는 버튼을 클릭하면 위로 U층을 가며 아래로 가는 버튼을 누르면 아래로 D층을 간다. 강호씨가 현재 위치에서 가고자 하는 위치까지 버튼을 총 몇번 눌러야 하는지 출력해야 한다. 전에 풀어봤던 문제와 비슷해서 쉽게 구현할 수 있었다. #include #include #include #include #include #include #include #include #include using namespace std; int elev[2000002]; int main(void) { cin.tie(0); ios::sync_with_stdio(0)..
입력 첫 줄에는 지도의 크기 N(100이하의 자연수)가 주어진다. 그 다음 N줄에는 N개의 숫자가 빈칸을 사이에 두고 주어지며, 0은 바다, 1은 육지를 나타낸다. 항상 두 개 이상의 섬이 있는 데이터만 입력으로 주어진다. 출력 첫째 줄에 가장 짧은 다리의 길이를 출력한다. [BOJ 2146(G3) 리뷰] 지도에 여러섬이 존재한다. 각 섬에서 다른섬으로 가는 최단경로를 찾아야 한다. 나는 다음과 같이 풀었다. 1.인접한 영역이 같은 섬이므로 1차적으로 BFS를 수행해 각 섬마다 index를 부여했다. 2.(1,1)부터 (n,n)까지 모든 경우에 대해서 현재의 섬index에서 다른 섬의index까지 도달하는데 걸리는 거리의 최소값을 구했다. 모든 경우의 수에서 탐색을 진행하다보니 시간복잡도는 엄청나게 증가..
- Total
- Today
- Yesterday
- nest.js
- boj
- 투포인터
- 백트래킹
- 자바스크립트
- 그래프
- 벨만포드
- 구현
- 동적계획법
- 예외처리
- node.js
- 자바
- 시뮬레이션
- 그리디
- BFS
- Computer Architecture
- 백준
- java
- nestjs
- 재귀
- dfs
- 중앙대학교
- 스레드
- nodeJS
- typeORM
- 세그먼트 트리
- 컴퓨터 구조
- 컴퓨터 통신
- ReactNative
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |