문제링크 : https://www.acmicpc.net/problem/20117 20117번: 호반우 상인의 이상한 품질 계산법 어떤 묶음에 있는 호반우의 품질이 [1, 2, 3, 4] 라고 하면 중간값인 3으로 모든 호반우의 품질을 계산한다. 따라서 이 묶음의 총 가격은 3 × 4 = 12 가 된다. 품질이 [6, 3, 9] 라고 하면 중간값인 6으로 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[100001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int N; cin >> N; ..
문제링크 : https://www.acmicpc.net/problem/18291 18291번: 비요뜨의 징검다리 건너기 강을 건너는 방법은, (1 → 4), (1 → 2 → 4), (1 → 3 → 4), (1 → 2 → 3 → 4)의 4가지이다. www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair #define MOD 1000000007 ll fun(ll x, ll y) { if(y> T; while(T--) { ll N; cin >> N; cout
문제링크 : https://www.acmicpc.net/problem/15787 15787번: 기차가 어둠을 헤치고 은하수를 입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[100001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; while(m--) { int c..
문제링크 : https://www.acmicpc.net/problem/15831 15831번: 준표의 조약돌 첫 줄에 조약돌의 총 개수 N, 준표가 원하는 검은 조약돌의 최대개수 B와 하얀 조약돌의 최소개수 W가 주어진다. 둘째 줄에는 N개의 조약돌의 정보가 한 줄로 주어진다. i번째 문자가 B라면 i번 조 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int main() { ios_base::sync_with_stdio(false); cin.tie(0); int N, B, W; cin >> N >> B >> W; string s; cin >> s; int l =..
문제링크 : https://www.acmicpc.net/problem/14231 14231번: 박스 포장 영선이는 과대 포장으로 유명한 남규 회사에서 아르바이트를 한다. 영선이는 여러 박스들을 여러겹으로 포장하는 업무를 맡았다. 박스를 포장할 때 규칙이 있는데, 일단 박스를 일렬로 주어진 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[5001]; int dp[5001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int N; cin >> N; for(int i=1; i> arr[i]; }..
문제링크 : https://www.acmicpc.net/problem/14284 14284번: 간선 이어가기 2 정점 n개, 0개의 간선으로 이루어진 무방향 그래프가 주어진다. 그리고 m개의 가중치 간선의 정보가 있는 간선리스트가 주어진다. 간선리스트에 있는 간선 하나씩 그래프에 추가해 나갈 것이다. www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair vector v[5001]; int dist[5001]; int N, M, a, b, c, s, t; void dijkstra() { priority_queue pq; //값이 작을수록 우선순위를 가짐 pq.push({0..
문제링크 : https://www.acmicpc.net/problem/10472 10472번: 십자뒤집기 당신에게 3x3 크기의 보드가 주어진다. 각각의 칸은 처음에 흰색 혹은 검은색이다. 만약 당신이 어떤 칸을 클릭한다면 당신이 클릭한 칸과 그 칸에 인접한 동서남북 네 칸이 (존재한다면) 검은색 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair vectorv[9] = { {0, 1, 3}, {0, 1, 2, 4}, {1, 2, 5}, {0, 3, 4, 6}, {1, 3, 4, 5, 7}, {2, 4, 5, 8}, {3, 6, 7}, {4, 6, 7, 8}, {5, ..
문제링크 : https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[10001]; int main() { int N, W, L; cin >> N >> W >> L; queueq; for (int i = 0; i < N; i++) {..
문제링크 : https://www.acmicpc.net/problem/7894 7894번: 큰 수 많은 어플리케이션은 매우 큰 수를 사용한다. 이러한 어플리케이션은 데이터를 안전하게 전송하고, 암호화하기 위해서 수를 키로 사용한다. 수가 주어지면, 그 수의 팩토리얼의 자리수를 구하 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int main() { int T; cin >> T; while(T--) { double m, result = 0; cin >> m; for(double i=1; i
문제링크 : https://www.acmicpc.net/problem/5569 5569번: 출근 경로 상근이가 사는 도시는 남북 방향으로 도로가 w개, 동서 방향으로 도로가 h개 있다. 남북 방향 도로는 서쪽부터 순서대로 번호가 1, 2, ..., w로 매겨져 있다. 또, 동서 방향 도로는 남쪽부터 순서대 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair #define MOD 100000 int dp[101][101][4]; //방향이 총 4가지 int main() { int W, H; cin >> W >> H; for(int i=1; i 위 } for(int i=1..
문제링크 : https://www.acmicpc.net/problem/16943 16943번: 숫자 재배치 두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다. 가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int A, B; string str_A; vectorv; int visited[10]; int max_V = 0, len = 0; void dfs(string s) { if(s.size() == str..
문제링크 : https://www.acmicpc.net/problem/8982 8982번: 수족관 1 입력의 첫 줄은 수족관의 경계에 있는 꼭짓점의 개수 N(1 ≤ N ≤ 5,000)이 주어진다. N은 짝수이다. 수족관의 경계는 항상 꼭짓점 (0, 0)부터 시작한다. 그리고 마지막 꼭짓점은 (A, 0)의 형태로 끝난 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair pii depth[400001]; //각 최대 깊이와 빠져나간 깊이 int main() { int N, M, result = 0; cin >> N; int x1, y1, x2, y2; cin >> x1 >..
문제링크 : https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int main() { int N,R_cnt=0,B_cnt=0; string s; cin>>N>>s; for(int i=0; i
문제링크 : https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int N, M, H, a, b; int result = MAX; int arr[31][11]; //H, N int max_cnt; bool check() //i번째 선이 i번째로 돌아오는가? { for (int i = 1;..
문제링크 : https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[200001]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; for(int i=0; i> arr[i]; } sort(arr, arr+N);..