728x90
반응형

알고리즘 154

[백준/BFS&DFS/C++] 9205번 맥주 마시면서 걸어가기

문제는 여기! #include using namespace std; int t, n; struct Point{ int x; int y; }; Point house, festival; Point cvs[101]; bool isvisited[101]; bool solve(){ queue q; q.push({house.x, house.y}); while(!q.empty()){ int x = q.front().first; int y = q.front().second; q.pop(); if(abs(x-festival.x) + abs(y-festival.y) n; cin >> house.x >> house.y; for(int c=0; c> cvs[c].x >> cvs[c].y; } cin >> festival.x ..

[백준/DP/C++] 1149번 RGB거리 *

문제는 여기! #include using namespace std; int N; int cost[3]; int house[1001][3]; void input() { cin >> N; for(int i=0; i> cost[0] >> cost[1] >> cost[2]; if(i==0){ house[0][0] = cost[0]; house[0][1] = cost[1]; house[0][2] = cost[2]; } else { house[i][0] = min(house[i-1][1], house[i-1][2]) + cost[0]; house[i][1] = min(house[i-1][0], house[i-1][2]) + cost[1]; house[i][2] = min(house[i-1][0], house[i-1..

[백준/DP/C++] 1463번 1로 만들기

문제는 여기! 문제 해결 방법 DP[n] : n을 만드는데 사용되는 연산의 최소 횟수 로 정하고 Dp{1] = 0,DP[2] = 1, DP[3] = 1, 나머지는 N으로 초기화를 했다. 그리고 n이 3으로 나누어 떨어지면 DP[n]과 DP[n/3]+1 의 최소값을 비교해서 DP[n]에 입력, n이 2로 나누어 떨어지면 DP[n]과 DP[n/2]+1 의 최소값을 비교해서 DP[n]에 입력, DP[n]과 DP[n-1]+1 의 최소값을 비교해서 DP[n]에 입력해서 문제를 해결했다. #include using namespace std; int N; int dp[1000001]; void solve(){ for(int i=4; i> N; fill(dp, dp+N+1, N); dp[1] = 0; dp[2] = 1..

[백준/구현/BFS&DFS/C++] 2573번 빙산

https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 문제 해결 방법 수도코드로 표현하면 아래처럼 표현할 수 있다. while(1){ if(빙하의 개수==0) break; 빙하 덩어리 수 세기(); if(빙하 덩어리수 > 1) break; else 빙하 녹이기(); } 그리고 크게 구현할 것은 아래 3가지 이다. 1. 빙하마다 바다에 둘러싸인 면의 수 구하기 2. 한번에 녹이기 3. 덩어리 수 세기 우선 입력받을 때 빙하는 queue에 넣어주었..

[백준/구현/백트래킹/C++] 17406번 배열 돌리기 4 (삼성 코딩테스트)

https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 문제 해결 방법 1. 회전연산의 순서 정하기 (수열 : 백트래킹) 2. 회전연산 구현 (재귀) 3. 배열 A의 값 구하기 크게 3가지로 나눌 수 있다. 먼저 회전 연산의 순서를 정하기 위해 백트래킹을 이용했다. // 회전연산 순서 정하기 void setOrder(int cnt){ if(cnt == K){ solve(); return; } for(int i=0; ic-..

[백준/구현/C++] 17281번 야구*

https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net #include #define MAX 51 #define PLAYER_NUM 10 using namespace std; int N, answer; int Order[PLAYER_NUM]; int Game[MAX][PLAYER_NUM]; bool selected[PLAYER_NUM]; vector v; void play_the_game(){ int score = 0; int start_player = 1..

[백준/BFS&DFS/C++] 2468번 안전 영역

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 전체 코드 #include using namespace std; int N; int MAP[101][101]; int minValue = 2e9, maxValue = 0; bool isVisited[101][101]; int dx[] = {-1, 0, 1, 0}; int dy[] = {0, 1, 0, -1}; void clearVisit(){ for(int i=0; i N; for(int i=0; i x..

728x90
반응형