알고리즘/백준-골드 11

백준 14497번 주난의 난(C++)

https://www.acmicpc.net/problem/14497 14497번: 주난의 난(難) 주난이는 크게 화가 났다. 책상 서랍 안에 몰래 먹으려고 숨겨둔 초코바가 사라졌기 때문이다. 주난이는 미쳐 날뛰기 시작했다. 사실, 진짜로 뛰기 시작했다. ‘쿵... 쿵...’ 주난이는 점프의 파 www.acmicpc.net 정답 코드 /* 주난 : * 초코바 : # 빈칸 : . 1: 친구 bfs해서 닿은 1은 다 녹이면된다. 처음으로 #에 다은 경우 끝 */ #include #include #include #define X first #define Y second using namespace std; int dx[4] = {0,0,-1,1}; int dy[4] = {1,-1,0,0}; bool vis[30..

백준 12851번 숨바꼭질 2 (C++)

문제 https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 정답 코드 #include #include #include using namespace std; #define CNT second #define POS first int N,K; bool vis[100001]; int num_cnt[100001]; int min_cnt = 100001; //최소 거리 /* 5 17 5 10 20 19 18 17 5 6 7..

백준 15684번 사다리 조작 (C++)

문제 정답 코드 #include #include #include #include using namespace std; int N,H;//점선 가로, 점선 세로 int M;//놓인 가로 bool table[31][11]; // table[H][N-1] int ret = 5; int dp[31][11]; bool calcDp(){//초기 주어진 값으로 dp배열 계산 for(int i=1;i> H; for(int i=0;i> a>>b; table[a][b] = true; } dfs(1,0); if (ret == 5) ret = -1; cout 5,000,000 (5백만) 사다리를 타는 연산 시간 : 사다리당 높이만큼 연산 -> 전부 계산하는데 300번 연산 진행 만약 브루스 포스로 하게 되면 15억정도 진행됨..

백준 16987번 계란으로 계란치기(C++)

문제16987번: 계란으로 계란치기원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱걸이를 5회 하는 기적의 운동 루틴을 통해 뇌와 근육을 동시에 단련한다. 근육을 단련할 때 식단이 정말로 중요하다는 것을 아는 인범이는 탄수화물이 많은 밥이나 빵 따위의 아침 식사를 대신해 단백질이 많은 계란찜을 해먹는다. 계란찜을 먹기 위해서는 계란을 깨야 하는데, 인범이는 힘이 너무 넘치는 나머지 부엌의 대리석을 이용해 계란을 깨면 늘 껍데기가 산산조각나 뒷처리가 너무 어렵게 되곤 한다. 어떻게 하면 계란을 조심스럽게 깰 수 있을까 고민하던 인범이에게 유현이는 굉장히 좋은 ..

백준 9205번 맥주 마시면서 걸어가기(C++)

문제9205번: 맥주 마시면서 걸어가기송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에 한 병씩 마시려고 한다. 즉, 50미터를 가려면 그 직전에 맥주 한 병을 마셔야 한다.https://www.acmicpc.net/problem/9205정답 코드#include #include #include #include #include int t_case; int n;//편의점 갯수 int home_x, home_y; int dest_x,dest_y; bool vis[101]; //-32768 ~ 3..

백준 10986번 __나머지 합__(C++)

문제10986번: 나머지 합수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오.https://www.acmicpc.net/problem/10986정답 코드#include #include using namespace std; long long input[1000001]; long long input_sum[1000001]; long long same_num[1001]; long long make_len(long long same){ long long ret = 0; if (same >= 2){ ret = (same * (same -1)) / 2; } return ret; } int main(){ long lon..

백준 1806번 부분합(C++)

문제1806번: 부분합10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.https://www.acmicpc.net/problem/1806정답 코드#include using namespace std; long long input[100001]; long long sum_input[100001]; int main(){ cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int n,m; cin >> n >> m; int start_idx = -1; for (int i = 0; i >input[i]; if..

백준 2636번 치즈(C++)

문제 정답 코드#include #include #include #include #include using namespace std; int n,m; #define X second #define Y first /* 입력 -> 변경 맵과 이전 백업맵 2개로 생김 이전 백업맵에서 bfs를 하는데 4방향 탐색중 0이 있다면 그 부분의 변경맵을 0으로 변경 그렇게 쭉 한바퀴를 다 돌고 나면 변경 맵을 검사해서 전부다 0인지 확인 전부다 0이면 이전 백업을 출력 아니라면 백업을 바꾼 맵으로 바꾸고 다시 함수 시작. */ const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0}; int check_done(vector ar) { for (int i=0;i < n;i++) ..

728x90