[문제 - 2178번 미로 탐색]https://www.acmicpc.net/problem/2178 [접근방식]그래프 탐색 알고리즘 문제를 집중적으로 해결하고 싶어서 선택한 문제이다.문제 자체는 많이 접해본 뉘양스가 느껴졌다.이동가능한 칸은 1, 이동불가능한 칸은 0으로 표시되어 있는 배열이 있다.좌측 상단 출발점(1,1) 에서 우측 하단 도착점(N, M)으로 이동가능한 최소 비용을 구하는 길찾기 문제 였다. DFS / BFS 중 어떤 것을 사용해야 하는지 상당히 많은 시간을 고민하였다. 문제에서 "항상 도착위치로의 이동을 보장" 이라고 명시하였고, 문제에서 원하는 답이 "최소 비용" 이므로, "BFS" 를 선택했다. BFS 방식의 핵심1. 현재 노드에서 접근 가능한 노드를 Queue에 담아 순차적으로 이..
백준
[백준 1753번 최단경로]https://www.acmicpc.net/problem/1753[접근 방법]'그래프의 한 정점에서 모든 정점까지의 최단 거리를 구하는 알고리즘' 인 다익스트라 알고리즘 반복 학습을 위해 이 문제를 선택하였다.다익스트라 알고리즘을 이용하여 문제를 해결하고자 한다. 문제를 해결하는 동안 고려할 사항은 다음과 같았다.1. 다익스트라 알고리즘을 사용한다.2. 2차원 배열을 이용한다면 '메모리 초과' 문제가 발생한다.3. 이를 해결하기 위해, 우선순위 큐를 사용한다. [JAVA 코드 - 2차원 배열 -> "메모리 초과"]import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;impor..
[문제 - 10800번: 컬러볼 (JAVA)] [접근 방법]예제 1을 통해 설명하겠다. 1) 'index', 'color', 'size' 의 속성을 갖는 Ball 클래스를 통해, 공 정보를 다룬다. 2) 공 크기에 따라 Ball 배열을 정렬한다. 정렬된 공의 배열을 차례로 탐색한다.탐색 차례의 공 (currentBall) 보다 작은 공의 size 를 sum 에 누적한다.color 별 공 size 를 colors[] 배열의 해당 color에 누적한다.currentBall 의 획득 가능한 점수 sum - colors[currentBall.color] (같은 크기의 공은 먹을 수 없다.) 를 구하여, result[] 배열에 저장한다. 3) balls[0] 탐색 4) balls[1] 탐색 5) balls..
[문제 - 31945: 정육면체의 네 꼭짓점 (JAVA)] [접근 방법] 0~7 까지의 입력되는 꼭짓점을 의미하는 정수를 2진수로 변환하면, 해당 꼭짓점의 좌표와 일치한다.예를 들면, '7' = 111(2) 이고, 좌표 (1, 1, 1) 이다. 네 꼭짓점이 한 평면위에 위치하기 위해선, 네 꼭짓점 각 좌표의 합이 x, y, z 중 하나는 0 OR 4 여야 한다. P1, P3, P5, P7 의 꼭짓점을 선택한 경우 이들의 좌표를 모두 더한다면,(0, 0, 1) + (0, 1, 1) + (1, 0, 1) + (1, 1, 1) = (2, 2, 4) 가 된다.이 4개의 좌표 모두 z = 1 평면 위에 존재하기 때문에, 조건에 만족한다. P0, P1, P2, P3 의 꼭짓점을 선택한 경우 이들의 좌표를 모두 ..
[문제 - 11659번: 구간 합 구하기 4 (JAVA)] [접근 방법]1. 2중 for 문을 이용하여서, arr[i] ~ arr[j] 까지 누적합을 구하는 방법=> 시간 초과 2. 2차원 배열 DP[i][j] 를 이용하여 (i, j) 의 값을 저장하는 방법=> 메모리 초과 3. [(1 ~ j) 누적합] - [(1 ~ i-1) 누적합] 을 구하는 방법=> 성공 [JAVA 코드] [시간 초과 - 2중 for 문으로 누적합 구하기]import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;imp..
[문제 - 25026번: 너의 평점은 (JAVA)][접근 방법]1. 전공 평점 = (학점 * 과목 평점) / (학점 총합) 2. '과목 평점' 의 문자를 문자 -> double 로 변경하는 함수가 필요하다. [JAVA 코드]import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.StringTokenizer;public class BOJ_25206 { public static void main(String[] args) throws IOException { ..