목록알고리즘 (508)
어흥
문제 링크: www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 1. 주의할 점 - 상어가 격자판의 끝에 도달할 경우, 방향을 바꿔서 전진하는 과정 구현 - 상어에 대한 정보의 표현 방법(배열 or 벡터 등등) 2. 구현 - 상어에 대한 정보를 입력받을 때 방향의 경우, 따로 설정한 방향으로 변환한다(0~3: 상우하좌 순서). 방향값 변환 이후, Shark 벡터에 상어에 대한 정보를 저장한다 - Player 변수를 통해 현재 낚시왕의 위치를 ..
문제 링크: www.acmicpc.net/problem/16920 16920번: 확장 게임 구사과와 친구들이 확장 게임을 하려고 한다. 이 게임은 크기가 N×M인 격자판 위에서 진행되며, 각 칸은 비어있거나 막혀있다. 각 플레이어는 하나 이상의 성을 가지고 있고, 이 성도 격자판 위 www.acmicpc.net 1. 주의할 점 - BFS()를 통해 퍼트린다 - 최대한 간단하게 구현한다 2. 구현 - 한번에 퍼질 수 있는 정도를 Len[] 배열에 담는다 - 10개짜리 Queue를 생성하여 각 숫자에 해당하는 경우에만 포함하도록 한다 - 입력받을 때, 해당 지역이 성이면 개수를 센다 - BFS() 함수를 통해 1부터 P번까지의 Queue를 순서대로 퍼트린다 - Arr[][] 배열만을 사용하며, 다음 칸으로 ..
문제 링크: swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PoOKKAPIDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 깍고 다음칸으로 가는 경우, 현재 높이에서 1만큼만 작게 깍았다고 가정한다 2. 구현 - 등산로에 대한 정보를 Arr[][] 배열에 받고, 그 중에서 가장 높은 높이를 저장한다 - 전역변수들을 초기화한다 - Arr[][] 배열중에서 가장 높은 높이인 경우, DFS() 함수를 수행하여 조건에 따라 이동한다 - 이때, Height 변수도 넘겨서 Arr[][] 배열을 직접 수정하지 않도..
문제 링크: www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 1. 주의할 점 - 모든 조건에 맞게 구현한다 - 초기화 작업을 잘 수행한다 - 얼음이 1 줄어드는 경우를 잘 생각한다 2. 구현 - 얼음판에 대한 정보를 Arr[][] 배열에 담는다 - 입력받는 변의 크기를 2^num으로 변환한다 - 입력받는 Len의 크기도 변환 후, Rotate() 함수를 통해 회전한다 - 회전이 끝나면 Shrink() 함수를 통해 얼음이 줄어드는 얼음판이 ..
문제 링크: www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 1. 주의할 점 - 토네이도는 1칸씩 계속 움직인다 - 현재 진행방향 기준으로 어떤 방향으로 얼마만큼 퍼지는지 미리 구해놓는다 - 주석으로 '중요' 표시한 2줄의 코드가 중요하다 2. 구현 - 모래밭에 대한 정보를 Arr[][] 배열에 담는다 - 8방향에 대한 정보를 dx[], dy[]에 미리 저장한다 - Order[] 배열을 통해 토네이도의 진행방향을 저장해놓는다 ..
문제 링크: www.acmicpc.net/problem/5213 5213번: 과외맨 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 500) 다음 줄부터 N*N-N/2줄(/는 정수 나눗셈이다)에는 두 양의 Ai와 Bi가 주어진다. (1 ≤ Ai, Bi ≤ 6, 1 ≤ i ≤ N * N - N / 2) 타일 i의 왼쪽에 쓰여 있는 숫자는 Ai, 오른 www.acmicpc.net 1. 주의할 점 - 타일에 대한 정보를 어떻게 저장하고 불러올 것인가 - 주변 타일을 어떻게 구할 것인가 - 끝까지 도달 못할 경우, 가장 번호가 큰 타일을 목적지로 한다 - 경로를 어떻게 저장할 것인가 2. 구현 - Arr[][]배열을 통해 각 타일에 대한 정보를 저장한다 - y와 x 벡터를 통해 각 타일이 2줄을 간격으로 Arr[][..
문제 링크: www.acmicpc.net/problem/16940 16940번: BFS 스페셜 저지 올바른 순서는 1, 2, 3, 4와 1, 3, 2, 4가 있다. www.acmicpc.net 1. 주의할 점 - 입력의 시작으로 1이 들어오는지 확인한다 - 2-2번의 조건을 정확히 처리한다 2. 구현 - 모든 간선에 대한 정보를 V[] 벡터에 저장한다 - 입력 받는 경로를 Order 벡터에 저장한다 - Finish[] 배열을 통해 방문했는지 체크한다 - inQueue[] 배열을 통해 현재 Queue에 있는지 확인한다 - Cnt를 통해 현재 비교해야 하는 번호를 가라킨다(Order[cnt]) - 큐에 1을 넣고 BFS를 시작한다. While문의 종료 조건으론 Queue가 비었거나 불가능한 경우다 - 현재 ..
문제 링크: www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 1. 주의할 점 - 매 TC, While문마다 초기화를 잘 수행해준다 - 범위밖으로 벗어나는 경우에 대한 처리를 잘 수행한다 - 주어진 규칙대로 전부 정확히 구현한다 2. 구현 - 범위밖으로 벗어나는 경우, 반대 방향으로 삽입되도록 구현한다 - 모든 파이어볼에 대한 정보를 Fire 벡터에 담는다 - Arr[][] 벡터 배열을 통해 파이어볼의 이동이 끝난 후, ..