본문 바로가기
반응형

알고리즘312

BOJ 17281 : ⚾ (A형 상시) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 A형 전체 링크www.acmicpc.net/workbook/view/2771 (상시 A형 문제집) www.acmicpc.net/problem/17281  9명의 타자가 있고 1번 타자는 4번에 고정이므로, 8! = 40320번의 경우의 수에 대해 시뮬레이션을 하면 된다.9명 타자를 줄 세우는 방법은 N과 M (1) - 순열의 방법을 이용한다. input에서는 간단히 player의 결과를 저장한다.void input(){ scanf("%d", &N); for (int i = 1; i  먼저 1번 타자를 4번에 고정하면 경우의 수를 만드는데 처리해야할 코드가 추가되므로,1번 타자는 1번에 고정하고 2 ~ 9번 타자에 대한 경우의 수를 .. 2021. 4. 17.
BOJ 20057 : 마법사 상어와 토네이도 (삼성 SW TEST A형) 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 }; 모래가 일정 비율로 흩날리게 되므로, 모래를 기준으로 좌표를 미리 정해둔다.위에서부터 왼쪽으로 순서.. 2021. 4. 16.
SWEA 5656 : 벽돌 깨기 (모의 SW 역량테스트) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 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  매 tc마다 input을 받고, 남은 벽돌의 최소 개수인 MINANS를 초기화하고 DFS를 실행한다.int main(void){ scanf("%d", &T); for (int tc = 1; tc 한 번 벽돌을 부순 곳에서 다시 벽돌을 부술 수 있으므로, 경우의 수는 WN이 된다... 2021. 4. 15.
BOJ 17136 : 색종이 붙이기 (A형 상시) SW 역량테스트 합격하기 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  DFS로 완전 탐색을 하기 위해 아래의 3가지 함수를 만든다. checkPaper는 (r, c) 좌표에 대해 색종이를 붙일 수 있는지 판.. 2021. 4. 14.
BOJ 20056 : 마법사 상어와 파이어볼 (삼성 SW TEST A형) 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;FIR.. 2021. 4. 13.
SWEA 5658 : 보물상자 비밀번호 (모의 SW 역량테스트) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 A형 전체 링크 모의 SW 역량테스트 문제집 보물상자 비밀번호 링크  문제에서 제시한 예시는 아래와 같다. 이 배열을 직접 4칸 나눠서 회전할 필요는 없다. 구현이 까다롭고 귀찮기 때문이다. 먼저 크기 N / 4 = 3만큼 배열을 뒤에 덧붙인다. 그리고 i = 0부터 N - 1까지 N / 4 칸씩 문자열을 10진수로 저장하면 생성 가능한 수를 모두 구하게 된다.makeDecimal은 넘겨받은 배열을 기준으로 size만큼 16진수로 변경한다.배열은 문자열이기 때문에 'A' 이상인 경우는 'A'를 빼주고 10을 더하고, 그 외에는 문자열 '0'만큼 빼면 된다.그리고 mul 변수에 16을 곱해가면서 16진수로 변경한다.int makeDeci.. 2021. 4. 12.
삼성 A형 샘플 문제 : 프로세서 연결하기 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  tc가 여러 개이기 때문에 매 tc마다 input을 받고, 초기화를 해줘야 한다.이 문제에서는 최대 core에서 최소 전.. 2021. 4. 11.
BOJ 17135 : 캐슬 디펜스 (A형 상시) 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.. 2021. 4. 11.
BOJ 1080 : 행렬 알고리즘 문제 전체 링크 www.acmicpc.net/problem/1080 A[r][c] != B[r][c]일 때, 위에서부터 왼쪽으로 A[r][c] ~ A[r + 2][c + 2]까지 뒤집으면 된다. 즉, (r, c)에서는 한 번만 뒤집던가, 뒤집지 않으면 된다. (r, c)에서 두 번 이상 뒤집는 것은 원래대로 돌아오기만 하므로 연산의 횟수만 낭비가 된다. (r, c)를 제외한 3 x 3 좌표는 다음 자기 차례가 올 때, 뒤집을지 판단하면 된다. #include #define MAX (50 + 5) int N, M; int A[MAX][MAX]; int B[MAX][MAX]; void input() { scanf("%d %d", &N, &M); for (int r = 1; r 2021. 4. 10.
반응형