본문 바로가기
반응형

알고리즘/[ADV] 삼성 SW 역량 테스트 A형113

BOJ 14891 : 톱니바퀴 (삼성 SW TEST A형) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14891  시뮬레이션 문제는 시키는대로 구현하면 된다.이 문제는 연속으로 회전이 발생하므로, DFS로 연속 회전 시켜보자. 먼저 rotate를 구현해보자.톱니의 번호와 방향을 입력받으면 회전하는 함수는 아래와 같이 구현할 수 있다.톱니바퀴 4개와 12시 방향 = 1 부터  8까지(순서대로 시계방향)의 톱니를 넣을 수 있는 2차원 배열을 선언하자.int wheel[5][10]; /* wheel[번호 1~4][각 톱니 1~8] */void rotate(int number, int dir){ int te.. 2021. 2. 21.
BOJ 14890 : 경사로 (삼성 SW TEST A형) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14890  먼저 경사로가 설치 가능한지, 1차원 배열에 대해서만 check함수를 만들고, for문을 이용해서 N번 check하자.이때, 가로 배열, 세로 배열에 대해서 따로 check를 만들 필요 없이, MAP을 회전 시킨 후 check 하면 된다.sum = 0;for (int i = 0; i  이제 경사로가 설치 가능한지 check해보자. 먼저 arr에 대해 inverse한 배열이 필요하다.for (int i = 0; i  arr는 →로 가면서 낮아지는 구간이 있는지만 check한다.inverse.. 2021. 2. 20.
BOJ 14889 : 스타트와 링크 (삼성 SW TEST A형) SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 A형 전체 링크 www.acmicpc.net/workbook/view/1152 (A형 문제집) www.acmicpc.net/problem/14889  N개의 팀 중, N / 2를 선택해야 하는 조합 문제이다.조합 문제에서는 list에 경우의 수를 저장했지만, 여기에서는 visit 배열을 이용해 선택한 팀을 1로 체크하자.그러면 visit = 0인 팀은 저절로 다른 팀이 된다. 마지막으로 선택된 팀(start), 선택되지 않은 팀(link)에 대해 입력받은 표를 보고 점수를 계산해주면 된다.start 팀은 team 배열의 앞에, link 팀은 team[halfN] 부터 저장하자.#include #define MAX (20 + 5)int .. 2021. 2. 19.
BOJ 14888 : 연산자 끼워넣기 (삼성 SW TEST A형) SW 역량테스트 합격하기 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  visit을 최대 possible까지 허용한다면?아래와 같이 코드를 수정하면 된다.void DFS(int L){ if (/* return 조건 */) re.. 2021. 2. 19.
BOJ 14503 : 로봇 청소기 (삼성 SW TEST A형) SW 역량테스트 합격하기 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방향에 대해서만 정의해주면.. 2021. 2. 17.
BOJ 14502 : 연구소 (삼성 SW TEST A형) SW 역량테스트 합격하기 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  이제 MAP을 입력받았으니, 벽을 3개 만들자.벽을 만들 때, 3중 for문을 이용할 수도 있지만, DFS 연습으로, 3단계를 걸쳐 벽을 만들어 보자.void DFS(in.. 2021. 2. 15.
BOJ 14501 : 퇴사 (삼성 SW TEST A형) SW 역량테스트 합격하기 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  input은 날짜가 1일부터 시작하므.. 2021. 2. 15.
BOJ 14500 : 테트로미노 (삼성 SW TEST A형) SW 역량테스트 합격하기 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 } }, { { .. 2021. 2. 15.
BOJ 14499 : 주사위 굴리기 (삼성 SW TEST A형) SW 역량테스트 합격하기 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 bottom;}DICE;DICE dice; /* map을 움직이는 dice는 전역으로 선언 */최대한 그림과 비슷하게 모양을 만들어 두면, 디버깅할 때 편하다. input 함수로.. 2021. 2. 15.
반응형