본문 바로가기
반응형

기출 문제37

BOJ 14888 : 연산자 끼워넣기 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14888 숫자가 N개 연산자가 N-1개가 있다. 연산자는 4종류고, 중복으로 사용이 가능한 경우다. 보통 DFS에서 visit(check, used)으로 현재의 값(여기에서는 연산자)을 사용 중인지 확인하고, DFS를 다음 단계로 보낸다. void DFS(int L) { if (/* return 조건 */) return; for (int i = 0; i < 4; i++) { if (visit[i] == 1) continue; /* 사용 중이면 패스 */ visit[i] = 1; /* 다음 dfs에서 선택하지 못하도록 표시 */ DFS(L + 1); visit[i.. 2021. 2. 19.
BOJ 14503 : 로봇 청소기 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14503 로봇 청소기와 같은 시뮬레이션은, 시키는 대로 구현하면 된다. 좌표 4방향, 북, 동, 남, 서는 문제에서 아래와 같이 정의되어있다. /* 0 1 2 3 -> 북 동 남 서 */ int dr[] = { -1, 0, 1, 0 }; int dc[] = { 0, 1, 0, -1 }; 방향 전환은 배열을 이용해서 간단히 할 수 있다. int change[] = { 3, 0, 1, 2 }; 북(0)에서 왼쪽으로 회전하면 서(3), 동(1)에서 왼쪽으로 회전하면 북(0), ... 으로 4방향에 대해서만 정의해주면 되므로 복잡하게 함수를 만들거나 if/else를 사.. 2021. 2. 17.
BOJ 14502 : 연구소 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14502 MAP을 입력받을 때, (0, 0)이 아닌 (1, 1)을 기준으로 잡는다. (0, 0) ~ (N+1, N+1)을 모두 1로 만들고 (1, 1)부터 입력을 받으면, 경계 조건을 신경쓰지 않고, 벽인지 아닌지만 체크하면 된다. void input() { scanf("%d %d", &N, &M); for (int r = 0; r 2021. 2. 15.
BOJ 14501 : 퇴사 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14501 모든 경우를 다 해봐야 최대 이익을 알 수 있다. 하지만 특정 일에 상담을 한다면, 해당 일 + T[i]일 부터 상담이 가능하다는 조건을 지켜야 한다. 모든 경우는 아래와 같다. 1일에 상담 -> 4일, 5일, 6일, 7일 상담 가능. 2일에 상담 -> 7일 상담 가능. ... 7일에 상담 -> 불가능. 따라서 DFS를 총 N번 실행한다. (N번째 일을 최초로 시작하는 상담) /* N일부터 상담 시작, 첫 보수는 0원 부터. */ for (int i = 1; i N) /* N + 1을 넘기면 상담 불가 */ { /* 상담을 시작한 날도 포함되므로, 이 .. 2021. 2. 15.
BOJ 14500 : 테트로미노 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14500 블럭은 5종류지만, 회전이나 대칭을 시켜도 되므로 총 19종류가 된다. 이 블럭을 실제로 4x4 배열로 만들면 아래의 모양이 된다. /* 19개 블럭을 4x4 배열로 선언 */ int BLOCK[19][4][4] = { { { 1, 1, 1, 1 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }, { { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 1, 0, 0, 0 } }, { { 1, 1, 0, 0 }, { 1, 1, 0, 0 }, { 0, 0, 0, 0 }, { 0.. 2021. 2. 15.
BOJ 14499 : 주사위 굴리기 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14499 4방향으로 명령어대로 움직이면 되는 시뮬레이션 문제이다. 아래와 같은 주사위의 모양이 되도록, 6면체를 가지는 구조체 DICE를 만들자. typedef struct st { int up; int left; int top; int right; int down; int buttom; }DICE; DICE dice; /* map을 움직이는 dice는 전역으로 선언 */ 최대한 그림과 비슷하게 모양을 만들어 두면, 디버깅할 때 편하다. input 함수로 MAP과 command를 저장해두고, move 동/서/남/북을 만들자. moveEast의 경우는 아래와 같다.. 2021. 2. 15.
BOJ 13458 : 시험 감독 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/13458 먼저 총감독관은 1명이어야 하므로 각 응시자수에서 B만큼 뺀다. 그리고 남은 응시자들을 감독할 부감독관을 계산하면 된다. 따라서 sum = 총감독관 (N명) + 부감독관 수가 된다. 응시자 수가 적어서(A[i] 1명 필요 남은 학생 수 2 => 1명 필요 남은 학생 수 3 => 1명 필요 남은 학생 수 4 => 2명 필요 ... 즉 감시 가능한 수의 배수 + 1 일 때, 부감독관이 1명 증가한다는 것을 알 수 있다. 따라서 총원에서 1을 빼주고 C 만큼 나눈 다음 1을 더하면 총 부감독관의 수가 된다. 정답은 아래 코드 참조. #include #defi.. 2021. 2. 15.
BOJ 3190 : 뱀 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/3190 삼성 A형은 보통 DFS/BFS 1문제, 시뮬레이션 1문제로 나온다. 첫번째 시뮬레이션 문제 뱀을 풀어보자. 뱀은 Snake 게임을 구현하면 된다. (구글에서 스네이크 게임 검색) 만들어야 함수는 다음과 같다. 1) input 함수 및 디버깅을 위한 output 함수. 2) 충돌 체크 함수. MAP을 어떻게 설계하냐에 따라 푸는 방법이 조금 달라질 수 있다. NXN 정사각 보드에서, 상하좌우 끝에 벽이 있다고 했으므로, (0, 0) 부터 (N + 1, N + 1)을 모두 벽으로 만들고, (1,1) ~ (N, N)을 보드로 덮어씌우자. 그리고 X초 뒤의 명.. 2021. 2. 14.
BOJ 12100 : 2048 Easy (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/12100 2048 게임을 구현하는 문제, 구슬 탈출 2와 마찬가지로 4방향으로 움직이며, 총 5회까지 가능하다. 즉 45=1024번 의 경우의 수 중 가장 큰 값을 구하면 된다. 만들어야 함수는 다음과 같다. 1) input 함수 및 디버깅을 위한 output 함수. 2) Map에서 가장 큰 값을 찾는 함수. 3) 2차원 배열 초기화 함수, copy 함수. 4) move 함수. (Left, Up, Right, Down) 1) ~ 3) 함수는 취향대로 만들자. A형에서는 라이브러리를 사용해도 되므로 memset, memcpy를 익혀두는 것도 괜찮다. (하지만 B형.. 2021. 2. 7.
반응형