목록구현 (196)
전자공학 및 알고리즘

문제 링크입니다. https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 삼성 SW 역량테스트 문제입니다. 까다로운 구현 문제였습니다. 게임이 멈추는 경우는 3가지입니다. 1. 턴이 1000번보다 넘게 진행되었을 경우 -> -1를 출력 2. 게임을 진행해도 끝낼수 없는 경우 -> -1를 출력 3. 블럭을 움직였을때 4개 이상의 블럭이 쌓였을 경우 -> 턴 횟수를 출력 3번 경우가 있기 때문에, vector를 통해서, (X , Y) 좌표에 어느 블럭..

문제 링크입니다. https://www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 삼성 SW 역량테스트 기출문제입니다. 꽤 복잡한 구현 문제였습니다. 저는 상어 움직이기 -> 겹치는 상어 없애기 -> 냄새 없애기 -> 냄새 퍼트리기 순서로 만들었습니다. 0. 선언된 배열, vector 설명 int change_way[401][4][4]; // X번 상어의 상하좌우 이동 우선순위 /// /////////////////..

문제 링크입니다. https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net 삼성 SW 역량테스트 기출문제입니다. 주사위 굴리기 + BFS가 합쳐진 문제였습니다. 주사위를 동서남북으로 바꿀때, 값이 어떻게 변하는지를 나타냈습니다. 이를 통해서 주사위를 구리는 것을 구현할 수 있습니다. 1. 주사위 방향 바꾸기 int change_way_180(int x) { if (x == 0 || x == 2) return x + 1; else ret..

문제 링크입니다. https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 삼성 SW 역량테스트 기출문제입니다. 톱니바퀴의 움직임을 구현하는 간단한 문제였습니다. 톱니바퀴가 움직이는 규칙입니다. 1. X번 톱니바퀴가 Y 방향으로 움직인다. 2. X+1, X-1번 톱니바퀴가 X번 톱니바퀴와 맞닿아있는 곳의 극이 다르다면 해당 번호도 움직인다. 3. 움직인 톱니바퀴를 기준으로 앞뒤의 톱니바퀴도 다시 확인한다. 4. 한번 움직인 톱니바퀴는 다시 움직이지..

문제 링크입니다. https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 삼성SW 역량 테스트 문제였습니다. 정렬 기준을 만들어 정렬하면 쉽게 풀 수 있는 문제였습니다. 채우는 과정을 예시 입력 1번을 통해 확인하겠습니다. 1. 4번이 채워질때, 좋아하는 학생이 인접한 칸이 없음으로, 빈칸이 가장 많은 가운데에 놓아진다. 2. 3번이 채워질때, 좋아하는 학생이 있고(4번), 해당 자리들의 빈칸 수가 모두 같음으로, 행이 가장 작은 곳에 앉는..

문제 링크입니다. https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 삼성 SW 역량테스트 문제입니다. Deque을 사용하면 풀 수 있는 문제였습니다. 뱀의 현재 위치와 이동했을 때, 뱀의 머리가 몸통에 닿는지를 확인해야 했습니다. 저는 Deque을 사용하여 front에는 머리 위치, back에는 꼬리 위치를 저장하여 풀었습니다. 이동할 때마다, 꼬리 위치인 back를 pop해주고, 새로운 머리 위치를 front에 push를 해주면서 뱀의 위치를 계속 갱..

문제 링크입니다. https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 삼성 SW 역량테스트 기출문제 입니다. 복잡해 보여도 규칙만 알면 매우 간단한 문제였습니다. 문제의 핵심은 주사위 움직임을 어떻게 구현하는가 입니다. 저는 주사위의 위치에 순서를 정하고, 동서남북 방향으로 굴렸을 때, 어떻게 변하는지는 확인했습니다. 사진을 통해 설명하겠습니다. 해당 사진을 보았을 때, 동서남북 방..

문제 링크입니다. https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 삼성 SW 역량테스트 기출문제입니다. 생각보단 귀찮은 구현 문제였습니다. 시간을 줄이기 위해 Queue에 좌표를 넣어놨습니다. 만들어야할 것은 1. 구름 좌표 이동 2. 해당 칸 물 증가 3. 다음 구름 찾기 입니다. 1. 구름 좌표 이동 while (!place.empty()) { int x = place.front().first; int y = place.front()..

문제 링크입니다. https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 삼성 SW 역량 테스트 기출문제였습니다. 생각보다 귀찮은 구현 문제였습니다. 모래가 4방향으로 뿜어지는 것을 구현하는게 포인트였습니다. 토네이도가 어떻게 움직이냐에 따라서 모래의 움직임이 달라집니다. 4방향으로 움직임으로 저는 모두 만들었습니다. 1. 소용돌이 구현하기 void tornado() { int move = 1; int cnt = 1; ..

문제 링크입니다. https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net BFS와 구현이 합쳐진 문제였습니다. 같은 색깔의 뿌요가 4개 이상인지를 찾은 뒤, 해당 뿌요들을 없앱니다. 그 뒤, 남아있는 뿌요를 아래로 내린 뒤, 다시 뿌요 그룹을 찾는 문제였습니다. 1. 같은 색의 뿌요 찾기 void puyo_boom(int a, int b, char c) { queue q; q.push({ a,b }); check[a][b] =..

문제 링크입니다. https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 삼성 SW 역량테스트 기출문제입니다. 문제 조건에 따라 구현만 하면 되는 문제였습니다. 1. 파이어볼 움직이기 typedef struct fire { int x; int y; int m; int s; int d; }fire; int dx[8] = { -1,-1,0,1,1,1,0,-1 }; int dy[8] = { 0,1,1,1,0,-1,-1..

문제 링크입니다. https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net 삼성 SW 역량테스트 기출 문제였습니다. 그래프 탐색 + 구현 문제로 구현해야할 것이 많은 문제였습니다. 한 일반 블록에서 상하좌우로 접한 블록 그룹을 찾은 뒤, 조건에 따라 정렬을 합니다. 이때 블록 그룹에는 무지개 블록은 항상 포함 가능합니다. 크기 -> 무지개 블록 수 -> 기준 블록의 행 -> 기준 블록의 열 순으로 블록 그룹을 정렬하고 가장 큰 그룹을 제거합니다. 블..