본문 바로가기

CODING119

[BAEKJOON] 녹색 옷 입은 애가 젤다지? SWEA의 '등산로 조정' 문제와 유사하다고 느껴졌다. 1. [0][0]칸에서 시작해 [N-1][N-1] 칸까지 최소 비용으로 도달할 수 있는 완전 탐색을 한다. 2. BFS를 사용했으며 우선순위큐로 현재 비용이 더 작은 것부터 탐색한다. 3. 현재 비용이 더 작은 것은 어떻게 알 수 있는가 ? 4. visit 방문 체크를 하지 않고, 초기 값을 Integer.MAX_VALUE 값으로 설정해주어 현재까지의 비용과 비교하며 더 작은 값으로 갱신한다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.Output.. 2023. 2. 25.
[Programmers] 가장 먼 노드 [출처] https://school.programmers.co.kr/learn/courses/30/lessons/49189?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 .. 2023. 2. 23.
[BAEKJOON] 색종이 만들기 분할 정복 방법으로 접근해야 하는 문제이다. 흰색과 파란색 정사각형 색종이의 개수를 각각 알아내어야 하는데 만약 1/2씩 접었을 때 나뉘어진 영역을 모두 같은 색상이어야 더 이상 나뉘지 않음을 알 수 있다. 만약 나뉜 영역이 오로지 한 색상만을 가지고 있지 않다면 다시 1/2씩 접혔다는 것을 의미한다. 아래 이미지와 같이 전체 붉은 영역이 한 색상만을 가지고 있지 않으므로 4등분으로 분할하고, 나뉜 부분 색종이를 하나씩 떼어 보았을 때에도 한 색상만을 가지고 있지 않다면 4등분, 한 색상을 유지한다면 현재 색상의 카운트를 증가시켜 return한다. 이렇게 반복하다보면 흰색, 파란색의 색종이의 개수를 카운트 하며, 모두 같은 색상인 가장 작은 단위의 색종이를 마지막으로 return될 것이다. import .. 2022. 12. 23.
[BAEKJOON] 낚시왕 이 문제는 크게 두 가지 스킬만 깨우친다면 쉽게 풀 수 있는 문제이다. 1. 상어가 움직일 때 현재 map의 R크기와 C크기에 따른 상어의 속력 s를 활용하여 움직인 후의 위치 찾아주기 2. PriorityQueue를 활용하여 상어의 크기가 큰 순으로 offer하기 → 상어가 모두 움직인 후 map에 위치시킬 때 해당 칸에 이미 상어가 존재한다면 현재 상어는 잡아먹히게 되는 것임 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Comparator; import java.util.PriorityQueue; im.. 2022. 11. 7.
[BAEKJOON] 치즈 원래 치즈 모양과 예제 입력에서 치즈 내부의 구멍이 있는 '0'인 곳은 공기로 보면 안 된다. 치즈가 아닐 뿐 외부 공기와 맞닿아 있지 않았기 때문이다. 또한, 예제 입력에서 판의 가장자리에는 치즈가 놓여있지 않다고 하니 외부 공기로 판단하여 bfs 혹은 dfs로 가장 겉부분의 치즈만 파악할 수 있다면 모든 치즈가 녹는 데까지 시간을 구할 수 있을 것이다. 시간이 1씩 증가할 때마다 공기의 상, 하, 좌, 우 방향으로 겉부분의 치즈를 공기에 노출되게끔 한다. 모든 치즈가 사라지기 전의 시간을 출력해야하므로 매 시간이 흐를 때마다 먼저 치즈의 전체 개수를 세고, 외부 공기를 맞닿게 하는 순서로 진행한다. [BFS 풀이] import java.io.BufferedReader; import java.io.IO.. 2022. 10. 23.
[Programmers] 최댓값과 최솟값 https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.제한 조건 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 입출력 예.. 2022. 9. 26.