본문 바로가기

전체 글

(164)
[백준] JAVA - 17144. 미세먼지 안녕! https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 생각 미세먼지의 확산과, 공기청정기가 작동하는 것을 모두 함수로 구현했습니다. 1. 미세먼지 확산 우선, 미세먼지의 확산은 모두 동시에 진행되기 때문에 BFS를 사용하여 구현했습니다. 다음으로 확산된 미세먼지들이 누적하는것은 따로 배열에 담아 저장시키고 나서 확산이 끝나면 한번에 누적시켰습니다. 미세먼지들이 동시에 확산되고 확산되는 양들을 어떤 타입으로 누적시켜야 할 지 한참 고민하다가 Dust..
[백준] JAVA - 7576. 토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 생각 BFS를 사용하고 BFS가 퍼져나갈때마다 큐의 원소에 들어가는 day를 1씩 증가시켜서 걸린 시간을 나타내도록 했습니다. map의 원소를 마킹하는것보다는 이 방식이 더 나은것같습니다. BFS의 시작점이 다수인경우에는 큐안에서 queue.size()만큼 반복문을 다시 돌게 해줍니다. 이렇게 하면 특정 정점으로부터 시작되는 너비 우선 탐색이 동시에 실행되게 구현할 수 있습니다. ..
2. TCP/IP의 데이터를 전기 신호로 만들어 보낸다 IP와 이더넷의 패킷 송수신 동작 TCP 담당 부분은 접속, 송수신, 연결끊기의 각 단계에서 통신 상대와 대화할 때 IP 담당 부분에 의뢰하여 대화하는 데이터를 패킷의 모습으로 만들어 상대에게 도착한다. TCP로 부터 의뢰를 받은 IP 담당 부분이 패킷을 어떻게 상대에게 송신할까? 패킷의 기본 송수신 동작 패킷의 송신처가 되는 기기가 패킷을 만든다. 헤더에는 적절한 제어정보를 기록하고, 데이터 부분에는 얼마간의 데이터를 넣은 후 패킷을 가장 가까운 중계장치에 송신한다. 가장 가까운 중계 장치에 도착하게된 패킷은 중계장치가 헤더를 조사하여 패킷의 목적지를 판단한다. 2번 작업을 반복해서 패킷을 중계하면 그 다음의 중계장치로 패킷이 보내지고 최종적으로 수신처의 기기에 도착하게 된다. 수신처에서 송신처를 향해..
[SWEA] JAVA - 1249. 보급로 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 생각 (0,0) -> (N-1, N-1)로 갈때 최소 비용으로 가는 비용을 찾는 문제입니다. 최소 비용을 찾는 문제이므로 경로가 단순하게 좌 -> 우 or 위 -> 아래 방향이 아니라 돌아서 갈 수 있기 때문에 BFS + 우선순위 큐를 사용하여 최소 비용을 가지는 지점을 가장 먼저 탐색하도록 했습니다. 1. 우선순위 큐를 생성하고 시작 위치를 넣어줍니다. 2. 큐가 빌때까지 3~5번 작업을 반복합니..
[SWEA] JAVA - 1251. 하나로 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15StKqAQkCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 생각 모든 섬들을 해저터널로 연결할때 최소비용으로 연결할때의 최소비용을 출력하는 문제입니다. 즉, 그래프에서 최소 비용을 찾는 문제로 모든 정점을 연결하는 간선들의 가중치의 합이 최소가 되는 MST를 구현하는 문제였습니다. 크루스칼 알고리즘을 사용하여 풀었습니다. 저는 섬들을 연결할 때 조합을 사용하여 가능한 모든 경우를 미리 탐색하도록 했는데 MST가 간선 기반의 greedy 알고리즘이므로 이렇게..
[백준] JAVA - 16918. 봄버맨 https://www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 생각 처음엔 나머지 연산을 해서 폭탄위치 마킹 -> 빈곳에 폭탄 채우기 -> 폭탄위치가 마킹된곳 BFS로 폭발시키기 이런식으로 구현했는데 주기별로 위의 상태가 변화하는것이 아니라서 문제에서 요구하는것을 그대로 구현하도록 했습니다. 1. 폭탄이 설치된 위치를 큐에 넣어줍니다. (초기상태, 1초 후) 2. 빈곳에 폭탄을 채워넣습니다. 3. 1초 증가시켜줍니다. 만약 time이 주어진 N초와 같다면 리턴합니다. 4. b..
[백준] JAVA - 17143. 낚시왕 https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 생각 단순하게 1초마다 상어를 움직이는 방식으로하면 시간초과가 난다고 알고있었는데 스터디원이 통과가됐다고 해서 저도 이렇게 바꿔서 제출했더니 통과했습니다.. 원래는 아래와 같은 방법으로 상어의 위치를 계산하도록 했는데 계속 틀렸다고 나왔습니다 어느 부분이 문제인지를 모르겠네요 ㅠㅡㅠ (추가) 나머지 연산을 사용하여 다시 풀었습니다! 상어가 다시 제자리로 위치하기 까지 2*(크기..
[백준] JAVA - 1577. 도로의개수 https://www.acmicpc.net/problem/1577 1577번: 도로의 개수 첫째 줄에 도로의 가로 크기 N과 세로 크기 M이 주어진다. N과 M은 100보다 작거나 같은 자연수이고, 둘째 줄에는 공사중인 도로의 개수 K가 주어진다. K는 0보다 크거나 같고, 100보다 작거나 같은 www.acmicpc.net 생각 스터디원의 도움을 받아 풀었습니다!!! (따봉우재야 고마워~) 0. dp의 값이 int의 범위를 벗어나므로 타입을 long으로 해줘야합니다!!! (int로 하면 틀렸다고 나옵니다ㅠㅠ 범위 체크를 꼭 해주자.. 메모메모) 1. 우선 맵을 반대로 뒤집어서 좌표의 출발점을 (0,0) 도착점을 (N,M)으로 잡아줍니다. 2. 이때 이동할수있는 방향은 두가지로 왼쪽->오른쪽, 위->아래..