-
[BOJ] 2583 영역 구하기알고리즘/백준 알고리즘 2022. 9. 7. 22:58
알고리즘 직사각형를 좌표를 받아서 배열에 그려주기 dfs 탐색 할때마다 탐색 횟수를 저장 2.에서 저장된 탐색 횟수를 오름차순 후 출력 코드 #include using namespace std; int m, n, k, _x1, _y1, _x2, _y2, cnt; int a[101][101]; const int dx[] = {0, -1, 0, 1}; const int dy[] = {-1, 0, 1, 0}; bool visited[101][101]; vector ret; int dfs(int y, int x){ visited[y][x] = 1; int ret = 1; for(int i = 0 ; i < 4; i++){ int nx = x + dx[i]; int ny = y + dy[i]; if( nx < 0..
-
[BOJ] 9626 크로스워드 퍼즐알고리즘/백준 알고리즘 2022. 9. 7. 22:48
문제 이해하기 크로스워드 퍼즐을 출력 하자. 크로스워드 퍼즐은 #.#.이 반복되는 구조이다 알고리즘 홀수 번째 줄에 짝수번째는 '#', 홀수번째는 '.' 짝수 번째 줄에 짝수번째는 '.', 홀수번째는 '#' 크로스워드의 시작점은 왼쪽(L개) + 위(U)개에서부터, M번째까지 코드 #include using namespace std; int m, n, u,l,r,d; string s[11]; char a[100][100]; int main(){ cin >> m >> n >> u >> l >> r >> d; for(int i = 0 ; i > s[i]; } for(int i = 0 ; i < m + u + d ; i++){ for(int j = 0 ; j < n + l + r ;..
-
[BOJ] 1629 곱셈알고리즘/백준 알고리즘 2022. 8. 30. 22:54
문제 이해하기 A를 B번 곱한 수를 C로 나눈 나머지의 값을 어떻게 알 수 있을까? 이때 각 숫자의 크기는 2,147,483,674 라는 매우 큰수이다. 예제 입력으로 이해하기 A :10 B :11 C: 12 10^11 % 12 = 10^5 * 10^5 * 10 % 12 = (10^2 * 10^2 * 10 ) * (10^2 * 10^2 * 10 ) % 12 = ((10*10) * (10*10) * 10 ) * ((10*10) * (10*10) * 10 ) % 12 알고리즘 각 변수의 크기가 크기 때문에 long long 타입으로 선언하자 재귀 함수를 이용해서 문제를 쪼개서 풀수 있다. cal(10, 11) = cal(10, 5) * cal(10, 5) * 10 % 12 B가 홀수인 경우에는 cal(A, ..
-
[BOJ] 1213 팰린드롬 만들기알고리즘/백준 알고리즘 2022. 8. 30. 00:20
문제 이해하기 영어 문자열을 받아서 팰린드롬으로 바꿔야 한다 예제 입력으로 문제 이해하기 입력 : AABB 출력 : ABBA A : 2개 B : 2개 BB ABBA 입력 : AAABB 출력 : ABABA A : 3개 B : 2개 BB ABABA 알고리즘 알파벳의 개수를 찾는다 알파벳의 개수가 홀수인 알파벳이 2개 이상인 경우는 불가능 한 경우이다. 사전순으로 앞서는 것을 출력해야 하므로 Z > A 순으로 데이터를 앞뒤로 붙여준다. 알파벳의 개수가 홀수가 1개 있었던 경우 문자열의 중간에 넣어준다. 코드 #include using namespace std; string s, ret; char mid; int cnt[200], flag; int main(){ cin >> s; // step 1 : 알파벳의 ..
-
[BOJ] 17296 : But can you do it in 0.5x A presses?알고리즘/백준 알고리즘 2019. 11. 1. 06:34
문제 이해하기 A 버튼을 누르는 최소 횟수 구하기 A 버튼을 X+0.5번을 누른 경우는 이전 스테이지를 깨고 다음 스테이지를 시작한 경우 예제 입력으로 문제 이해 하기 입력값이 0.5 1.5 0 1.5 1인 경우 각 스테이지의 필요한 A 버튼의 최소 횟수가 주어진다. 1 STAGE : 0.5 - 이전 스테이지가 없으므로 한번 눌러준다. (누른 상태를 유지한다!) => 총 1회 2 STAGE : 1.5 - 1 STAGE에서 누른 상태이므로 1번만 더 누르면 된다. => 총 2회 3 STAGE : 0 - 2 STAGE에서 누른 상태를 유지하자(최소 횟수를 구해야 하므로) => 총 2회 4 STAGE : 1.5 - 3 STAGE에서 누른 상태로 왔으므로 1번만 더 누르면 된다 => 총 3회 5 STAGE : ..