본문 바로가기
반응형

구현47

SWEA 5648 : 원자 소멸 시뮬레이션 (모의 SW 역량테스트) 삼성 A형 전체 링크 모의 SW 역량테스트 문제집 원자 소멸 시뮬레이션 링크 좌표가 -1000 ~ 1000으로 굉장히 넓기 때문에, MAP에는 atom을 표시만 하고, atom 배열을 이용해 atom을 이동한다. atom 구조체는 좌표 (r, c), 방향, 보유 에너지가 필요하다. typedef struct st { int r; int c; int dir; int energy; }ATOM; ATOM atom[1000 + 100]; 좌표가 음의 값을 가지므로, OFFSET을 이용하여 양의 값으로 만들어야 배열에 담을 수 있다. 이 때, 0.5초 구간 충돌을 구현하기 위해, 좌표를 2배로 늘린다. 좌표를 2배로 늘렸으니 원자들은 항상 1초마다 충돌한다. 가장 작은 좌표의 값은 -1000이고 2배를 할 경우 .. 2021. 4. 26.
BOJ 17406 : 배열 돌리기 4 (A형 상시) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/2771 (상시 A형 문제집) www.acmicpc.net/problem/17406 MAP은 (1, 1)부터 input을 받고, COMMAND 구조체에 (r, s, c)를 저장한다. #define MAX (50 + 10) int N, M, K; int MAP[MAX][MAX]; typedef struct st { int r; int c; int s; }COMMAND; COMMAND command[10]; void input() { scanf("%d %d %d", &N, &M, &K); for (int r = 1; r 2021. 4. 24.
SWEA 5650 : 핀볼 게임 (모의 SW 역량테스트) 삼성 A형 전체 링크 모의 SW 역량테스트 문제집 핀볼 게임 링크 공의 움직임을 구현할 때, 고려해야할 사항이 많은 문제이다. 이런 경우, 실수를 줄이기 위해 define을 해두면 편하다. 먼저 block의 상태는 아래와 같이 정의한다. #define BLACKHOLE (-1) #define EMPTY (0) #define BLOCK_START (1) #define BLOCK_END (5) #define WORMHOLE_START (6) #define WORMHOLE_END (10) BLOCK인 경우는 1 ~ 5, WORMHOLME은 6 ~ 10이므로 START, END로 경계를 나눈다. 방향에 관한 define은 아래와 같이 정한다. 그리고 LEFT ~ DOWN에 대응하는 dr, dc 배열을 정의한다... 2021. 4. 22.
BOJ 3954 : Brainf**k 인터프리터 (A형 상시) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/2771 (상시 A형 문제집) www.acmicpc.net/problem/3954 명령어를 쉽게 판단하기 위해 아래와 같이 define하자. typedef unsigned char uc; #define MAX (50000000) #define DECREASE ('-') #define INCREASE ('+') #define POINTER_LEFT ('') #define POINTER_RIGHTJUMP ('[') #define POINTER_LEFTJUMP (']') #define OUTPUT ('.') #define READ_AND_SAVE (',') #define MODULO (256) 괄호의 짝을 찾는 방법은 BOJ 9012 .. 2021. 4. 21.
BOJ 20058 : 마법사 상어와 파이어스톰 (삼성 SW TEST A형) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/20058 시뮬레이션 문제이므로, 그대로 구현한다. 먼저 input은 (1, 1)부터 받아서 주변을 MAP의 주변이 0이 되도록한다. 그러면 주변의 얼음을 체크할 때 편하다. 그리고 MAP의 size는 2N이므로 비트 연산 (1 2021. 4. 20.
SWEA 5653 : 줄기세포배양 (모의 SW 역량테스트) 삼성 A형 전체 링크 모의 SW 역량테스트 문제집 줄기세포배양 링크 먼저 좌표가 무제한이기 때문에, 어느 정도의 크기로 MAP을 선언할지 생각해야 한다. K가 최대 300번, 총 300번 시뮬레이션해야하고, 가장 빨리 증식하는 세포는 생명력 수치가 1이다. 따라서 2시간에 1번씩 4방향으로 계속 퍼지므로, 300번동안 최대 150 만큼 MAP이 커진다. 어느 정도 여유를 두기 위해 MAP은 500 x 500 중심점(OFFSET)은 250으로 두었다. #define MAX (500) #define OFFSET (250) int T, N, M, K; int MAP[MAX][MAX]; MAP은 줄기세포의 생명력 수치를 표시하기 위해 사용한다. 줄기세포를 퍼지게 하는 것은 줄기세포 구조체 CELL의 배열이다. .. 2021. 4. 18.
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 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.
반응형