목록전체 (348)
파게로그
문제 링크: 20057번 마법사 상어와 토네이도 https://www.acmicpc.net/problem/20057 문제에서 나오는 대로 구현하면 되지만, 까다로운 부분이 있었다. 첫째로, 모래가 이동하는 목적지의 좌표를 토네이도의 방향에 따라 이동해주는 것이 까다로웠다. 직접 4개의 배열을 작성했는데, 이것보다 간결한 방법이 있는지 알아보아야겠다. 둘째로, α로 이동하는 모래의 양이 단순하게 55%가 아니라는 것이다. 셋째로, 토네이도의 이동 길이이다. 이동 거리를 0부터 시작해서 서쪽으로 이동할 때 또는 동쪽으로 이동할 때마다 이동 거리가 1씩 증가하도록 하였다. 넷째로, 토네이도의 이동 방향이다. dirCnt라는 변수를 통해 모듈러 연산을 활용했다. import java.io.BufferedRead..
문제 링크: 14890번 경사로 https://www.acmicpc.net/problem/14890 꼼꼼함이 요구되는 문제였다. 물론 처음부터 모든 경우의 수를 고려하는 것도 중요하겠지만, 현실적으로 스스로를 완전히 신뢰할 수는 없기에 많은 엣지 케이스를 테스트해보는 것도 좋은 방법일 것이다. 일단 가로든 세로든 각 길에 대해서 한 방향으로만 경사로를 놓을 수 있는지 체크하면 된다. 즉 예를 들어서 가로 길의 경우, 왼쪽에서 오른쪽으로 이동하면서 경사로를 놓을 수 있다면 오른쪽에서 왼쪽은 체크할 필요가 없다. 이 문제의 경우에는 다음과 같은 경우를 체크하는 것이 까다로웠다. 이를 위해서 내리막이 있을 때 먼저 내리막 이후의 평지에 대해서 시작 인덱스와 끝 인덱스를 구하고, 끝 인덱스 이후의 땅이 1만큼 ..
문제 링크: 7562번 나이트의 이동 https://www.acmicpc.net/problem/문제번호 평범한 BFS 구현을 통해 최단거리를 구할 수 있다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static int[] drow = {-1, -2, -2, -1, 1, 2, 2, 1}; static int[] dcol = {-2, -1, 1, 2, ..
문제 링크: 4963번 제목 https://www.acmicpc.net/problem/4963 map을 순회하면서 육지인 지역(map[i][j]==1)이고 방문하지 않은 지역(!visit[i][j])인 경우에 DFS를 수행한다. 한 번 시행되고 나면 해당 육지와 연결된 지역은 모두 visit[i][j]는 true이므로 재방문되지 않고, 이러한 조건을 이용해서 섬의 개수를 센다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { static int[] drow = {-1, -1, -1, 0, 1, 1, 1, 0}..
문제 링크: 11724번 연결 요소의 개수 https://www.acmicpc.net/problem/11724 BFS 또는 DFS를 평범하게 구현하여 해결할 수 있는 문제이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; public class Main { /* static void dfs(ArrayList[] graph, boolean[] visit, int cur) { visit[cur] = t..
문제 링크: 7576번 토마토 https://www.acmicpc.net/problem/7576 먼저 상자 전체를 순차적으로 탐색하면서 익은 토마토의 위치를 큐에 저장한다. 그 이후에 큐가 빌 때까지 BFS를 바로 수행해준다. BFS를 끝마친 후 마지막에 익지 않은 토마토를 찾았을 때, for문을 일일이 탈출하지 말고 label을 이용하면 보다 편리하다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; public class Main { static ..
문제 링크: 2178번 제목 https://www.acmicpc.net/problem/2178 최단거리를 찾으므로 BFS로 구현하는 것이 유리하며, 방문하는 새로운 칸에는 현재의 칸에 저장된 값보다 1만큼 큰 값을 저장한다. 코드에서는 이용하지 않았지만, maze 배열의 테두리를 0(이동할 수 없는 칸)으로 감싸게 되면 새로 이동할 칸이 maze를 벗어나지 않는지 체크할 필요가 없다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import jav..
TCP/IP(Transmission Control Protocol/Internet Protocol)의 등위 개념으로는 AppleTalk, IPX(Internetwork Packet eXchange), NetBEUI 등이 있다. TCP/IP의 특징 각각의 네트워크에 접속하는 호스트는 고유한 주소를 가지고 있어서, 자신이 속해 있는 네트워크뿐만 아니라 다른 네트워크에 연결된 호스트와도 서로 데이터를 주고받을 수 있다. 패킷 교환 방식을 관장하는 프로토콜이다. 전송 조절 프로토콜인 TCP는 데이터를 패킷으로 나누어 인터넷 네트워크를 통해 전송하는 일과 수신된 패킷을 원래의 데이터로 조립하는 역할을 담당한다. IP는 각 패킷의 주소를 담당하여 패킷들이 목적지에 정확하게 도달하도록 한다. UDP와의 차이를 주목할..