목록알고리즘 문제/[삼성 SW 역량 테스트 기출 문제] (31)
Muscardinus
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/birKYy/btqG4b7Ehz3/yxDlcOnpE1k5KYiJrjymFk/img.jpg)
https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net #include using namespace std; int n, m, sx, sy, k; int dice[6]; int ndice[6]; int map[20][20]; int dy[] = { 0,0,-1,1 }; //동서북남 int dx[] = { 1,-1,0,0 }; void move_dice(int dir) { switch (..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MzyG5/btqGUd6EV0f/VYVdMSCO3zwGhLsyzUhNFK/img.jpg)
https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net #include using namespace std; int n, b, c; int p[1000001]; int main() { ios_base::sync_with_stdio(false); cin >> n; for (int i = 0; i > p[i]; } cin >> b >> c; long long cnt =..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJ2Cn6/btqGK3i4aqX/IENdPIBkPUwhM89qs3o8q0/img.jpg)
https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. www.acmicpc.net #include using namespace std; int map[101][101]; int snake_y[10101], snake_x[10101]; char cmd[10001]; int head_x, head_y,tail_index; int dx[] = { 1,0,-1,0 }; int dy[] = { 0,1,0,-1 }; int main() { ios_base::sync_with_stdio(false..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clAQh6/btqGIpeJodi/Qx7sSFUw7fJDHIXM8K8zMK/img.jpg)
https://www.acmicpc.net/problem/12100 #include using namespace std; int n; int answer = 0; struct BOARD { int map[20][20]; void rotate() { //90도 회전 int temp[20][20] = { 0 }; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { temp[j][n-i-1] = map[i][j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { map[i][j] = temp[i][j]; } } } void up() { //위로 올리기 int temp[20][20]; for..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3VZtv/btqGQbTHyFZ/8FsS0QORkRt60FyFJbdxd1/img.jpg)
https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net #include #include using namespace std; int n, m; char g[11][11]; int dx[4] = { 0,0,1,-1 }; int dy[4] = { 1,-1,0,0 }; int c[11][11][11][11] = { 0 }; // 지나갔는지 확인 int rx, ry, bx, by,d; struct bead {..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cKRgsr/btqGG9JXCEI/4CSsODywCt1zEgtk0qeUQ1/img.jpg)
https://www.acmicpc.net/problem/14501 #include #include using namespace std; int n; int t[16] = { 0 }; int p[16] = { 0 }; int result = 0; void DFS(int day, int currentCost) { if (day == n + 1) { result = max(result, currentCost); } else { if (day + t[day] > n; int i, j; int time, cost; for (i = 1; i > time >> cost; t[i] = time; p[i] = cost; } DFS(1,0); cout n; for (int i = 1; i > t[i] >> p[i]; f..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PRoTf/btqGFbtYaxT/nfAz0yeoNqKpfNklgDDJ9K/img.jpg)
https://www.acmicpc.net/problem/14888 C++ #include #include using namespace std; int n; int a[12]; int op[11]; int maxResult = -2147000000; int minResult = 2147000000; void DFS(int depth,int result) { if (depth == n) { maxResult = max(maxResult, result); minResult = min(minResult, result); } else { if (op[1] != 0) { op[1]--; DFS(depth + 1,result+a[depth+1]); op[1]++; } if (op[2] != 0) { op[2]--;..