728x90
반응형

알고리즘 154

[백준/구현/백트래킹/C++] 14502번 연구소 (삼성 코딩테스트 기출)

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 해결 방법 문제는 크게 벽 세우기 -> 바이러스 퍼트리기 -> 안전영역 크기 구하기 이렇게 풀 수 있다. 처음에 입력을 받을 때 바이러스의 위치는 벡터 virus에, 빈칸 위치는 벡터 v_empty에 담았다. void input(){ cin >> n >> m; for(int i=0; i x; MAP[i][j] = x; if(x == 2) virus.push_back({i,j}); if(x == 0) v_..

[백준/구현/C++] 15685번 드래곤 커브 *

https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net #include #define MAX 101 using namespace std; int n, x, y, d, g; int MAP[MAX][MAX]; int dx[] = {0, -1, 0, 1}; // 오른쪽, 위, 왼쪽, 아래 int dy[] = {1, 0, -1, 0}; vector Dir_Info; void Make_Dragon_curve(){ int s = Dir..

[백준/완전탐색/C++] 15683번 감시 *

https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net #include using namespace std; struct CCTV{ int x; int y; int num; int dir; }; int n, m, answer = 2e9; int MAP[9][9]; int CMAP[9][9]; vector cctv; void input(){ cin >> n >> m; for(int i=0; i tmp; MAP[i][j] = tmp; if(tm..

[백준/BFS/C++] 2606번 바이러스

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net #include using namespace std; int n, m; vector v[101]; bool isVisited[101]; int result = 0; void findVirus(){ queue q; q.push(1); isVisited[1] = true; while(!q.empty()){ int front = q.front(); q.pop(); result++; for(int i=0; i..

[백준/구현/C++] 14499번 주사위 굴리기 (삼성 SW 역량 테스트 기출)

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 문제 해결 방법 주사위가 굴려질 때 마다 윗면을 어떻게 체크할까 하다가 위, 앞, 오른쪽을 표시하는 포인터를 구현하기로 했다. 그러면 주사위가 굴려질 때 마다 인덱스가 오른쪽처럼 변하게 된다 전체 코드 #include using namespace std; int n, m, x, y, k; int mapp[21][21]; int pl..

[백준/구현/C++] 21610번 마법사 상어와 비바라기 (삼성 SW 역량 테스트 기출)

https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 문제 해결 방법 먼저 구조체 두개를 선언한다 MOVEINFO 는 구름 이동방향과 거리를 담고 POSITION에는 각 위치마다 현재 구름이 있는지 여부, 사라졌는지 여부, 물의양을 담는다 struct MOVEINFO{ int dir; // 방향 int sp; // 거리 }; struct POSITION{ bool hasCloud = false; // 현재 구름 있는 경우 bool disClo..

[백준/구현/C++] 21608번 상어 초등학교 (삼성 SW 역량 테스트 기출) *

https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 일단 머리로 시뮬레이션을 돌려봤는데 내가 생각한 방법으로는 무조건 시간초과가 나올 것 같아서 블로그를 참조했다. https://yabmoons.tistory.com/656 이 블로그를 봤는데 생각도 못한 구조체랑 필요에 맞게 조건을 만들어서 정렬하는 등 배울게 많았다. 다시 풀어보면서 공부해야겠다. 문제 해결 방법 먼저 구조체 두개를 선언한다 학생정보(STUDENT), 자리 배치를 위해..

[백준/구현/백트래킹/C++] 15686번 치킨배달 (삼성 SW 역량 테스트 기출)

https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 문제 해결 방법 처음에 도시의 정보를 입력받을 때 1일때는 vector h에, 2일때는 vector ch에 좌표를 넣어준다 if(x==1) h.push_back({i,j}); // 집인 경우 else if(x==2) ch.push_back({i,j}); // 치킨집인 경우 그리고 전체 치킨집의 수와 m을 비교하여 조건을 나눠서 구현했다 1. 치킨집의 수가 m보다 클때 ( 전체..

[백준/구현/C++] 13458번 시험 감독 (삼성 SW 역량 테스트 기출)

https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net #include using namespace std; int n, b, c; int a[1000001]; long long int result; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> n; for(int i=0; i> a[i]; } cin >> b >> c; result ..

728x90
반응형