반응형 삼성 A형143 BOJ 19237 : 어른 상어 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/19237 시뮬레이션 문제는 그대로 구현만 하면 된다. 먼저, MAP에는 number, current, time이 필요하다.number는 자신의 냄새를 찾기 위해 사용하고, current는 실제 현재 MAP에 있는 상어의 번호이다.그리고 time은 냄새의 유효시간이다. SHARK에는 상어의 좌표 (r, c), 방향, 방향에 대한 우선순위 2차원 배열, 생존 여부가 필요하다.typedef struct st1{ int number; int current; int time;}INFO;INFO MAP[.. 2021. 4. 6. BOJ 16637 : 괄호 추가하기 (A형 상시) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/2771 (상시 A형 문제집) www.acmicpc.net/problem/16637 첫 번째 예시를 보자.연산자는 + * - * 로 총 4개이다. 순서대로 1, 2, 3, 4번째 연산자로 정의하자. 먼저 괄호 안에는 연산자가 하나만 들어있어야 하므로, 1번 연산자에 괄호를 만들면, 2번 연산자는 괄호가 불가능하다.→ (3 + 8) * 7 - 9 * 2 따라서 DFS로 아래의 경우의 수가 되도록 만든다. 0 0 0 0 → 괄호가 없는 경우0 0 0 1 → 4번 연산자에만 괄호를 만든 경우0 0 1 0 0 1 0 0 0 1 0 1 → 2번, 4번 연산자에 괄호를 만.. 2021. 4. 5. BOJ 19236 : 청소년 상어 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/19236 아래와 같이 FISH 구조체를 선언하여 좌표와 방향, 그리고 죽었는지 살았는지 체크하는 dead를 정의하자.상어의 이동을 쉽게 종료하기 위해 MAP 주변은 -1로 벽을 만들고, (1, 1)부터 입력을 받자.MAP에는 물고기의 번호만 저장하고, 그 물고기 번호로 fish 배열에서 물고기의 정보를 찾는다.int MAP[6][6];typedef struct st2{ int r; int c; int dir; int dead;}FISH;FISH Fish[17];void input(){ for .. 2021. 4. 3. BOJ 20061 : 모노미노도미노 2 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/20061 시뮬레이션 문제는 그대로 구현하면 되지만, 위 문제는 조금 복잡하다.따라서 만들어야 하는 함수의 재활용을 잘 해야 구현과 디버깅이 쉽다. 먼저 전체 함수를 Blue / Green으로 나누는 것이 편하다. 1) block을 움직이는 함수는 moveBlue, moveGreen이다. block이 3가지 경우로 나뉘므로 내부에서 switch를 이용한다. 2) deleteBlue(column), deleteGreen(row) 함수로 블럭을 지운다. 3) getScoreBlue와 getSco.. 2021. 3. 31. BOJ 17825 : 주사위 윷놀이 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/17825 시뮬레이션 문제는 시키는 대로 구현하면 된다. 이 문제에서는 파란색 화살표가 핵심이다. 파란색 화살표에 시작할 경우는 방향이 바뀌기 때문이다.이런 경우는 그냥 처음부터 움직여야하는 방향에 대한 답을 적어두고 시작하면 된다. 먼저 왼쪽의 점수판은 오른쪽 그림처럼 번호를 매겨 1차원 배열로 만든다. 그러면 아래와 같이 input에서 미리 답을 적어둘 수 있다.int dice[10 + 5];int next[32 + 5][6];int score[32 + 5];int board[32 + 5];.. 2021. 3. 28. BOJ 17822 : 원판 돌리기 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/17822 원판이지만 2차원 배열에서 같은 번호면 큐에 넣어서 BFS 탐색을 하면 된다. circle[r][c] = 0인 경우는 탐색하지 않으므로, 주변을 0으로 만들고, (1, 1)부터 input을 받는다.void input(){ scanf("%d %d %d", &N, &M, &T); for (int r = 1; r 이제 원판을 돌리는 함수를 구현해보자.반시계 방향으로 1칸 움직이는 것은 시계 방향으로 M - 1칸 움직이는 것과 동일하므로, 시계 방향만 구해주면 된다.따라서 d == 1 (반.. 2021. 3. 26. BOJ 17837 : 새로운 게임 2 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/17837 덱(deque)를 사용하여 풀이를 하지만, 실제 덱 사용법과는 다르게 풀어본다. (단순 배열이라고 생각하는 것이 좋다.)나무 재테크와는 달리 덱의 앞 부분에 push/pop되는 경우가 없다. 현재 이동하는 말부터 모두 옮기고, 다음 칸에 넣을 때, 순서대로 넣거나, 반대로 넣는 차이만 있을 뿐,다음 칸의 말의 앞부분에 넣지는 않는다. 따라서 초기의 front와 back을 0으로 초기화해도 된다. 구현 방법은 아래와 같다. 다음 칸이 WHITE 면, moveWhite를 한다.다음 칸이 .. 2021. 3. 23. BOJ 17779 : 게리맨더링 2 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/17779 (x, y) → (r, c)로 설명한다. (r, c)를 기준으로 마름모를 만드는 것이 핵심이다.(r, c)를 기준으로 d1과 d2를 늘려가면서 선거구를 만든다.이때, 범위를 체크하는 것보다 벽 = -1 을 만나면 종료하도록 구현하면 편하다. 따라서 input에서 A의 주변을 -1로 만들고 (1, 1)부터 입력을 받자.#define MAX (20 + 5)int N;int MAP[MAX][MAX];void input(){ scanf("%d", &N); for (int r = 0; r 모.. 2021. 3. 20. BOJ 17142 : 연구소 3 (삼성 SW TEST A형) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/17142 연구소 문제와 다른 점은 벽을 세우는 것이 아니고, 바이러스를 M개 선택해야하는 것이다. 바이러스의 선택 → DFS 경우의 수 : 조합 문제 바이러스의 확산 → 토마토 문제를 같이 조합해서 풀면 된다. 먼저 문제를 풀기 편하게 input을 받으면서 MAP을 재변경하자.벽(1)과 바이러스(2)를 그대로 두면, 바이러스가 몇초 뒤에 퍼지는지 셀 때, 구분하기 까다롭다.따라서 벽은 -1로, 바이러스는 -2로 표시하자.또한, 바이러스는 따로 배열에 저장해두자.typedef struct st{ .. 2021. 3. 17. 이전 1 ··· 10 11 12 13 14 15 16 다음 반응형