본문 바로가기
반응형

모의고사71

BOJ 20057 : 마법사 상어와 토네이도 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/20057 시뮬레이션 문제이므로, 그대로 구현하면 된다. 구현 전에 토네이도의 규칙을 알아보자. 먼저 토네이도는 최초로 ←로 움직인다. 그리고 순서대로 ↓, →, ↑로 움직이며 4방향을 반복한다. 따라서 0, 1, 2, 3을 왼쪽, 아래, 오른쪽, 위로 정의한다. /* 순서대로 왼쪽, 아래, 오른쪽, 위 */ int dr[] = { 0, 1, 0, -1 }; int dc[] = { -1, 0, 1, 0 }; 모래가 일정 비율로 흩날리게 되므로, 모래를 기준으로 좌표를 미리 정해둔다. 위에서부터 왼쪽으로 순서대로 0, 1, 2, ..., 8까지 번호를 매긴다. a .. 2021. 4. 16.
SWEA 5656 : 벽돌 깨기 (모의 SW 역량테스트) 삼성 A형 전체 링크 모의 SW 역량테스트 문제집 벽돌 깨기 링크 벽돌은 (1, 1)부터 입력을 받고 주변을 벽(-1)으로 만들어두자. #define MAX (15 + 5) int T, N, W, H; int MAP[MAX][MAX]; int MINANS; void input() { scanf("%d %d %d", &N, &W, &H); for (int r = 0; r 2021. 4. 15.
BOJ 17136 : 색종이 붙이기 (A형 상시) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/2771 (상시 A형 문제집) www.acmicpc.net/problem/17136 input에서 색종이 상태를 입력받고, 색종이의 개수 PAPER_COUNT에 저장해둔다. 그리고 각 색종이의 최대 개수인 5를 MAX_PAPER[1~5]에 저장한다. #define MAX (10 + 10) int MAP[MAX][MAX]; int PAPER_COUNT; int MAX_PAPER[10]; void input() { for (int r = 0; r < 10; r++) { for (int c = 0; c < 10; c++) { scanf("%d", &MAP[r][c]); PAPER_COUNT += MAP[r][c]; } } for (in.. 2021. 4. 14.
BOJ 20056 : 마법사 상어와 파이어볼 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/20056 시뮬레이션 문제는 시키는 대로 풀면 된다. 먼저 FIREBALL은 자신의 좌표(r,c), 질량(m), 속도(s), 방향(d)를 가진다. FIREBALL이 얼마나 많아질지 예측할 수 없으므로 적당히 크게 메모리를 잡는다. M은 최대 2500, 1000회 시뮬레이션이 진행되지만 의외로 작은 메모리도 pass한다. (실제 A형을 응시한다면 최대한 메모리를 넉넉하게 잡으면 된다.) typedef struct st1 { int r; int c; int m; int s; int d; }FIREBALL; FIREBALL fireball[10000 + 5000]; i.. 2021. 4. 13.
SWEA 5658 : 보물상자 비밀번호 (모의 SW 역량테스트) 삼성 A형 전체 링크 모의 SW 역량테스트 문제집 보물상자 비밀번호 링크 문제에서 제시한 예시는 아래와 같다. 이 배열을 직접 4칸 나눠서 회전할 필요는 없다. 구현이 까다롭고 귀찮기 때문이다. 먼저 크기 N / 4 = 3만큼 배열을 뒤에 덧붙인다. 그리고 i = 0부터 N - 1까지 N / 4 칸씩 문자열을 10진수로 저장하면 생성 가능한 수를 모두 구하게 된다. makeDecimal은 넘겨받은 배열을 기준으로 size만큼 16진수로 변경한다. 배열은 문자열이기 때문에 'A' 이상인 경우는 'A'를 빼주고 10을 더하고, 그 외에는 문자열 '0'만큼 빼면 된다. 그리고 mul 변수에 16을 곱해가면서 16진수로 변경한다. int makeDecimal(char* ptr, int size) { int su.. 2021. 4. 12.
삼성 A형 샘플 문제 : 프로세서 연결하기 삼성 A형 전체 링크 swexpertacademy.com/main/sst/intro.do SW Expert Academy에서 A형 샘플 문제 프로세서 연결하기를 풀어보자. 좌표는 (1, 1)부터 받고, 주변을 MAP[r][c] = 2(벽)으로 처리해서 경계 조건을 쉽게 처리하도록 하자. (core = 1, 벽 = 2, 전선 = 3 으로 정의한다.) #define MAX (10 + 5) int T, N; int MAP[MAX][MAX]; void input() { scanf("%d", &N); for (int r = 0; r 2021. 4. 11.
BOJ 17135 : 캐슬 디펜스 (A형 상시) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/2771 (상시 A형 문제집) www.acmicpc.net/problem/17135 먼저 궁수가 탐색해야할 우선순위를 구해보자. 아래의 그림은 D = 1, 2, 3인 경우 궁수가 탐색해야하는 순서다. 적이 가장 가까울 경우 가장 왼쪽에 있는 적을 공격한다고 하였으므로, 거리가 가장 가까운 앞을 보고, 그 다음 거리부터는 왼쪽/가운데/오른쪽 순서대로 탐색한다. D = 4인 경우, 규칙이 점점 보인다. 위의 탐색 순서를 궁수를 기준으로 r, c로 나타내면 아래와 같다. 좌표 r은 -1부터 시작해서 감소하다가 다시 증가한다. 좌표 c는 처음엔 0이며, 그 다음 주기에는 -1 부터 1씩 증가, 그 다음은 -2부터 1씩 증가한다. 이 주기.. 2021. 4. 11.
BOJ 20055 : 컨베이어 벨트 위의 로봇 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/20055 시뮬레이션 문제이므로 그대로 구현한다. BELT 구조체는 현재 belt의 번호, 로봇이 있는 경우 로봇의 번호, 그리고 내구도 A가 저장된다. robot의 번호는 벨트가 최대 200개이고 내구도가 1000이므로, 20만개 정도로 메모리를 잡는다. robot[i] = i번째 로봇이 현재 있는 belt의 번호이다. #define MAX (100 + 20) int N, K; typedef struct st { int number; int robotNumber; int A; }BELT; BELT belt[MAX * 2]; int changeBelt[MAX * .. 2021. 4. 10.
BOJ 19238 : 스타트 택시 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/19238 문제를 자세히 읽어서 아래의 조건을 파악하는 것이 핵심이다. 1) 승객의 출발지는 모두 다르지만, A 승객의 도착지와 B 승객의 출발지가 같을 수 있다. 2) 승객의 출발지나 도착지가 벽으로 막혀서 찾을 수 없는 경우를 고려해야 한다. 먼저 구조체 3개가 필요하다. RC : 좌표 저장 구조체 PEOPLE : 1 ~ M번 승객의 출발지와 도착지, 그리고 check를 이용하여 탑승 여부를 확인하는 구조체 INFO : 택시가 가장 가까운 승객을 찾을 때, 승객의 번호와 거리를 저장할 구조체 #define MAX (20 + 5) int N, M, F; int .. 2021. 4. 8.
반응형