몽셀통통의 블로그
문제https://www.acmicpc.net/problem/13458 풀이간단한 for문으로 풀었다아마 더 시간을 줄일 수 있는 방법이 있을것이다 코드123456789101112131415161718192021222324#include #include using namespace std; long long int N;long long int arr[1000001];long long int B, C; int main() { cin >> N; for (int i = 0; i > arr[i]; cin >> B >> C; long long int cnt = N; for (int i = 0; i 0) { cnt += (arr[i] - B) / C; if ((arr[i] - B) % C != 0) cnt += 1..
문제https://www.acmicpc.net/problem/1726 풀이가중치 없이 최단 거리를 구하는 문제이므로 bfs 사용일단 현재 위치에서 방향에 따라 visit 처리를 해주어야 하므로 visit[MAX][MAX][5]로 해주어야 한다 이 문제를 두가지 이유때문에 틀렸는데첫번째는 최단 거리를 구하는 문제라 생각하고 습관적으로 상하좌우 방향을 모두 살폈다는 점이다이 문제는 이동거리에 따른 카운트가 아니라 명령 횟수에 따른 카운트 이다이 명령에는 turn도 명령 카운트에 들어가므로 상하좌우 방향으로 함부로 카운트 하면 안된다현재 방향에서 1,2,3 go 명령에 카운트 해주고 좌,우로 90도 turn 해준것을 카운트 한다 두번째는 주어진 방향이 내가 코드로 짜기 편하게 바꾸어야 하는데 설정을 잘못해서 ..
문제https://www.acmicpc.net/problem/2638 풀이가중치 없는 최소 거리를 구하는 것이므로 bfs로 사용외부에 닿아있는 치즈를 구할때는 dfs 사용 내부에 있는 공기는 신경 쓰지 않기 때문에 이 부분은 (0,0)에서 dfs를 시작하면 만나는 1만 queue에 넣어준다 (visit으로 체크)그러면 외부에 공기만 닿아있는 치즈만 담을 수 있다. 큐에 들어가있는 좌표의 치즈가 외부 공기에 2면 이상 맞닿아있는지 확인해야 되는데visit이 1이면서 0인 값이 상하좌우로 있나 확인하면 된다 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960..