728x90
반응형
[백준 9920번] image (C++)
PS/백준 알고리즘[BOJ]2023. 10. 21. 22:07[백준 9920번] image (C++)

//white: 0, black: 1 #define SIZE 64 #include using namespace std; int dat; int cnt; int map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { dat = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (dat != map[i][j]) return true; } } return false; } int dc(int size, int x, int y) { if (size == 1) return 2; if (!check(x, ..

[백준 1780번] 종이의 개수 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 21. 17:01[백준 1780번] 종이의 개수 (C++)

//white: 0, black: 1 #define SIZE 2187 #include #include #include using namespace std; int dat; // -1, 0, 1 int cnt[3]; // -1: 0, 0: 1, 1: 2 int map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { dat = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (dat != map[i][j]) return true; } } return false; } void dc(int size..

[백준 1992번] 쿼드트리 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 21. 15:49[백준 1992번] 쿼드트리 (C++)

//white: 0, black: 1 #define SIZE 64 #include #include #include using namespace std; char col; char map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { col = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (col != map[i][j]) return true; } } return false; } void dc(int size, int x, int y) { if (size == 1) { cout str; ..

[백준 2630번] 색종이 만들기 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 20. 22:00[백준 2630번] 색종이 만들기 (C++)

//white: 0, black: 1 #define SIZE 128 #define F first #define S second #define X dir_x #define Y dir_y #include using namespace std; int col; int cnt[2]; //index 0: white, 1:blue int map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { col = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (col != map[i][j]) return true..

[백준 1074번] Z (C++)
PS/백준 알고리즘[BOJ]2023. 10. 18. 10:49[백준 1074번] Z (C++)

1. 문제 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 2. 풀이 단순히 모든 칸을 한칸씩 다 탐색했더니 시간초과가 나왔다. N의 최대값을 살펴보니 15이다. 최대 size는 2의 15승이므로 32,768이 된다. 즉, 최대넓이는 32,768 x 32,768 = 1,073,741.824로 10억이 넘어간다. 결국 10억이 넘는 칸을 모두 탐색할 경우 대충 10초가 나온다.(1억번 탐색하면 약 1초가 나오므로) 따라서 구역을 확인 후..

알고리즘 대회 및 코딩테스트에서의 기초 코드 작성 요령
PS2023. 10. 12. 17:40알고리즘 대회 및 코딩테스트에서의 기초 코드 작성 요령

공부하다 보면 항상 부족한 점이 많다고 느낀다. 그럴수록 더더욱 기본적인 태도가 중요함을 느낀다. 코딩은 평소 습관이 중요하다. 알고리즘대회나 코테를 치는 경우 평소 코딩습관이 그대로 반영되어 큰 영향을 미치곤 한다. 따라서 대회나 시험당일에 빠르고 효율적으로 문제를 풀기 위해 평소 길러야할 기초 코드 작성요령을 정리하려고 한다. 종만북이라는 유명한 책이 있다. 대회를 통해 배우는 알고리즘 문제해결전략이라는 책이다. 필자는 이 책을 참고하여 알고리즘을 연습중이다. 따라서 공부하며 느낀점을 따로 정리하려고 한다. 1. 반복은 되도록이면 피하는게 좋다. 코딩을 할 때 가장 우선시되어야할 기본적인 태도이기도이다. 조건문이나 반복되는 변수를 사용할 때 이를 활용하면 시간을 절약할 수 있다. 2. 변수명은 최대한..

[백준 10799번] 쇠막대기 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 12. 17:21[백준 10799번] 쇠막대기 (C++)

1. 문제 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 레이저로 쇠막대기를 자른다. 쇠막대기와 레이저가 주어졌을 때 잘려서 나누어진 막대조각의 수를 구하는 문제이다. 이때 주어진조건은 다음과 같다. ()는 무조건 레이저를 나타낸다. 한 막대의 밑에는 위의 막대보다 긴 막대만 올 수 있다. 쌓인 막대의 양끝부분은 겹치지 않는다. 2. 풀이 현재의 condition을 유지한 상태로 같은 작업을 반복한다는 점에서 stack의 자료구조가 떠올랐다.

728x90
반응형
image