반응형
[백준 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의 자료구조가 떠올랐다.

[백준 9012번] 괄호 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 12. 17:13[백준 9012번] 괄호 (C++)

1. 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 스택을 활용한 전형적인 괄호의 유효성을 검사하는 문제이다. 2. 풀이 문자열을 탐색하면서 stack이 비어있으면 추가한다. stack이 차있는 경우 stack.top와 문자를 비교하여 짝이 맞으면 stack.top을 제거하고 짝이 맞지 않으면 현재 문자를 stack에 추가한다. 3. 코드 #include #include #include using names..

[백준 3986] 좋은 단어 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 12. 17:01[백준 3986] 좋은 단어 (C++)

1. 문제 https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net A와 B를 입력받고 같은 문자끼리 짝을 짓는 문제이다. 이때 아치형 곡선을 그어 서로의 곡선이 겹치지 않게 만든다 2. 풀이 아치형 곡선을 그어 서로의 곡선이 겹치지 않게 만든다는 말은 다음과 같이 바꿔 해석할 수 있다. 홀수 번째 입력받은 A를 ' ( '로, 짝수 번째 입력받은 A를 ' ) '로 치환하여 괄호쌍을 짝짓는 문제로도 볼 수 있다. 마찬가지로 B도 홀수 번째 입력받은 B를 ' [ '로..

[백준 4949번] 균형잡힌 세상 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 12. 10:26[백준 4949번] 균형잡힌 세상 (C++)

깔끔하게 구현한 최종 코드는 맨 아래에 정리해 두었다. 1. 문제 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 괄호쌍의 유효성을 검사하는 문제이다. 2. 풀이 문자열을 탐색하며 열린 괄호( ' ( ' 또는 ' [ ' )가 닫힌 괄호( ' ) ' 또는 ' ] ' )와 만날 때마다 짝을 지어서 준다. 이 과정에서 자료구조의 스택(stack)을 활용하면 효율적으로 풀 수 있다. 방법 열린 괄호( ' ( ' 또는 ' [ ' )..

728x90
반응형
image