boj
알고리즘56 :: BOJ_1032_명령프롬프트
알고리즘56 :: BOJ_1032_명령프롬프트
2020.02.21이 문제는 N가지 문자가 주어지는데 첫번째 자리 부터 N번째 자리까지 같은 문자 라면 포함시키고 그게 아니라면 ? 를 넣어주면 되는 문제이다. 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 31 32 33 34 35 36 37 38 39 40 package backjun; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; public class 명령프롬프트_1032 { static int n; static char[][] str; public static void main(String[] ar..
알고리즘47 :: BOJ_15686_치킨배달
알고리즘47 :: BOJ_15686_치킨배달
2020.01.27Code : 꽥! 클릭 클릭 해주세요. lllilllilllilili/algorithmWithDonburi Algorithm with King Donburiburi♥ . Contribute to lllilllilllilili/algorithmWithDonburi development by creating an account on GitHub. github.com 궁금한게 생기시면 클릭해주세요!!! 서로 배워 가요 😀 꽥님의 오픈프로필 open.kakao.com 치킨 배달 문제는 두가지만 기억하고 있으면 접근하기 쉽습니다. 1) 치킨 집을 뽑을 수 = 조합 2) 그리고 맵의 크기만큼 순회하면서 집과 선택된 치킨집간의 거릿값을 모두 더해서 최솟값을 갱신하면 됩니다. 조합은 재귀를 이용해서 구현할 수 있는데 ..
알고리즘46 :: BOJ_2138_전구와스위치
알고리즘46 :: BOJ_2138_전구와스위치
2020.01.27전구와 스위치 문제는 그리디 문제로 분류되는 유형입니다. N개의 스위치와 N개의 전구가 있을 때 1번째의 스위치를 선택 하는 경우와 선택 하지 않은 경우로 나눠볼 수 있습니다. 이렇게 함으로써 A : 000 B : 010 로 A-B 상태를 보고자 할때 A의 1번째 전구의 상태가 B의 1번째 전구의 상태와 같다면 A의 다음 스위치를 누를 필요가 없게 됩니다. 이렇게 접근해야 하는 이유는 A의 스위치로 변할 수 있는 상태가 각 전구 별로 232 에서 121로 바꿀 수 있기 때문입니다. (232 는 1번째 스위치가 1,2 변할 수 있는 경우의 수 이고 2번째 스위치가 1,2,3 변할 수 있는 경우의 수이고 3번째 스위치가 2,3 변할 수 있는 경우의 수 입니다.) 즉, 이러한 상태를 1번째 스위치를 선택 한 ..
알고리즘39 :: BOJ_2933_미네랄
알고리즘39 :: BOJ_2933_미네랄
2019.12.071 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 package backjun; import java.util.ArrayList; import java.util.Arrays; import java.util..
알고리즘35 :: BOJ_17779_게리맨더링2
알고리즘35 :: BOJ_17779_게리맨더링2
2019.11.03꽥님의 오픈프로필 open.kakao.com 게리맨더링2는 좌우 대각선으로 늘어나는 방법과 밑으로 모이는 지점만 잘 체크해서 빡구현 하면된다. 구역이 총 5구역이 있으므로 전체 맵에 값을 계산하는 total 값이 있으면 좋다. 그리고 구역을 나누고 값을 설정해두면 더 좋다. 헷갈리는 일이 없다. 1 1 1 5 2 2 1 1 5 5 2 2 1 5 5 5 3 3 ... 이런식으로 표시해두면 나중에 값을 계산할때 불편하지 않았다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56..
알고리즘26 :: BOJ_11729_하노이타워
알고리즘26 :: BOJ_11729_하노이타워
2019.02.28123456789101112131415161718192021#include using namespace std; void func(int a, int b, int n){ if(n==1){ // a에 있는 원판 1개를 b로 옮기기만 하면 됨 cout
알고리즘25 :: BOJ_2017_미로탐색
알고리즘25 :: BOJ_2017_미로탐색
2019.02.281 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 31 32 33 #include using namespace std; #define X first #define Y second // pair에서 first, second를 줄여서 쓰기 위해서 사용 string board[102]; // '1'이 파란 칸, '0'이 빨간 칸에 대응 int dist[102][102]; // 해당 칸을 방문했는지 여부를 저장 int n,m; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; // 상하좌우 네 방향을 의미 int main(){ ios::sync_with_stdio(0); cin.ti..
알고리즘24 :: BOJ_1926번_그림
알고리즘24 :: BOJ_1926번_그림
2019.02.281 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #include using namespace std; #define X first #define Y second // pair에서 first, second를 줄여서 쓰기 위해서 사용 int board[502][502]; // 1이 파란 칸, 0이 빨간 칸에 대응 bool vis[502][502]; // 해당 칸을 방문했는지 여부를 저장 int n,m; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; // 상하..
알고리즘21 :: BOJ_1707_이분그래프
알고리즘21 :: BOJ_1707_이분그래프
2019.02.2712345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697#include #include #include #include #include using namespace std; vector a[20001]; int color[20001]; void dfs(int node, int c){ color[node] = c; for(int i=0; i
알고리즘17 :: BOJ_3053_택시기하학
알고리즘17 :: BOJ_3053_택시기하학
2019.02.26이 문제는 우리가 일반적으로 아는 원의 넓이 구하는 방법가 문제에서 제시하고 있는 택시 기하학이란 정의로 원의 넓이를 구하는 것이다. 원의 넓이야 PI * R^2 을 하면 된다. https://librewiki.net/wiki/%ED%83%9D%EC%8B%9C_%EA%B8%B0%ED%95%98%ED%95%99 에 따르면 택시 기하학은 정사각형 이라고 한다. 따라서, 위 그림처럼 원 안에 정사각형을 둔 형태를 고려해 봤을때 지름 2R 은 정사각형의 대각선이랑 같게 된다. root(2) * 정사각형 한 변의 길이 = 대각선의 길이 라는 공식을 가져와서 보면 이식을 풀었을때 정사각형의 넓이는 2*R^2 이 되는것을 알 수 있다. 기하학에 대한 식견을 넓힐 수 있는 문제였던거 같다. 1 2 3 4 5 6 7 8..
알고리즘16 :: BOJ_13241_최소공배수
알고리즘16 :: BOJ_13241_최소공배수
2019.02.25단순히 최소공배수를 구하는 문제였다. 다만, 두 수가 서로소 일경우는 if(b==1)이 없이는 무한루프가 돌 수 있기 때문에 b==1 이란 블락을 하나 생성하여 추가해줬다. 최소 공배수는 알다싶이, (a*b)%gcd 로 계산할 수 있다. 주의할 점은 문제에서 언급한대로 값이 크기 때문에 long long int를 사용해야 했었다. (...처음에 서로소를 찾는 문제인줄 알고 에라토스 테네스 체를 구현하고 있었는데, 다시 보니까 전혀 아니더라카더라) 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 #include using namespace std; const int MAX = 1000000; int prime[MAX]; int pn; b..
알고리즘15 :: BOJ_1107_리모컨
알고리즘15 :: BOJ_1107_리모컨
2019.02.25이 문제는 입력으로 주어지는 수에 대해서 완전탐색, 즉 브루트포스 를 통해 해결할 수 있는 문제다. 리모컨으로 누를 수 있는 수는 0~9 까지이다. 이때 입력받는 채널은 최대 500,000인데 고장난 버튼을 고려하면 1,000,000이되어야 한다. 버튼이 6빼고 전부 고장났다고 생각해보면 입력받은 채널은 500,000 일때 66666 500,000 666,666 66666에서 500,000 을 +버튼을 누르는것보다 666,666 에서 -버튼을 누르는것이 비용적으로 덜들게된다. 접근방법은 다음과 같다. 1. 처음 시작 버튼 100번에서 +로 증가할수 있는 횟수를 파악한다. 2. 완전탐색을 진행하면서 고장나지 않은 버튼으로 입력받은 채널각각의 숫자와 몇개가 일치하는지 개수를 length로 잡고, 현재 값과 ..