[백준/BOJ] 2606 바이러스 - JAVA - 실버3
·
알고리즘/문제풀이
[백준/BOJ] 2606 바이러스 - JAVA - 실버3문제https://www.acmicpc.net/problem/2606문제 분석조건네트워크로 연결된 컴퓨터들 사이에서 1번 컴퓨터와 연결된 컴퓨터의 수를 구하는 문제이다.풀이방법많은 문제를 BFS를 활용하며 해결하므로 DFS를 통해 문제 해결을 해보았다.DFS를 구현하여 문제를 해결할 수 있는데 1번 노드를 제외한 연결된 노드의 수를 출력하므로 마지막에 `-1`를 해주었다.코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { static boolean[][] graph..
[백준/BOJ] 11053 가장 긴 증가하는 부분 수열 - JAVA
·
알고리즘/문제풀이
백준 BOJ 11053 가장 긴 증가하는 부분 수열 - JAVA - 실버2문제https://www.acmicpc.net/problem/11053문제 분석조건첫째 줄에 수열의 크기, 둘째 줄에 수열이 주어짐가장 긴 증가하는 부분 수열의 길이 출력풀이방법LIS 알고리즘을 활용하여 풀이코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Bu..
[백준/BOJ] 14939 불 끄기 - JAVA
·
알고리즘/문제풀이
백준 BOJ 14939 불 끄기 - JAVA문제https://www.acmicpc.net/problem/14939문제 분석조건방의 크기는 10X10으로 일정하다.불이 켜진 곳은 'O', 꺼진 곳은 '#'으로 표현된다.스위치를 누른 곳과 상하좌우의 상태가 반전된다.모든 전구를 끄기 위해 최소한으로 눌러야 하는 스위치의 개수 출력모두 끌 수 없을 경우 -1 출력풀이방법하나의 스위치 상태를 바꾸면 상하좌우가 전부 반전되므로 1행의 상태가 결정이 된다면 그 아래는 자동으로 결정됨한 행의 스위치가 10개이므로 총경우의 수는 2^10개로 많지 않음위 행을 기준으로 켜진 스위치를 끈다면 해당 행의 윗 행은 전부 스위치가 꺼지게 됨마지막 행에서 위 행을 기준으로 스위치를 껐을 때 켜져 있는 스위치가 남아있을 경우 불가..
[백준/BOJ] 1520 내리막 길 - JAVA - 골드3
·
알고리즘/문제풀이
[백준/BOJ] 1520 내리막 길 - JAVA - 골드3문제https://www.acmicpc.net/problem/1520문제 분석조건왼쪽 위에서 시작하여 오른쪽 아래로 이동하는 것이 목표현재 숫자보다 작은 인접한 숫자로만 이동할 수 있음가능한 경로의 수를 출력풀이방법DFS를 이용하여 경로를 탐색하며 DP를 이용하여 방문했던 점엔 다시 방문하지 않는 방법을 이용했습니다.DP 테이블을 -1로 초기화 한 뒤 출발지점부터 탐색을 시작현재 좌표에 이미 방문을 했으면 현재 좌표의 DP값을 반환하고, 첫 방문(-1)일 시 0으로 DP값을 업데이트DFS 탐색을 시계방향으로 했을 때 아래와 같은 상황이 된다.방법을 반복하여 목표 지점에 도달하였을 경우 1를 반환하고 이를 이전 좌표 DP값에 업데이트 한다.DP값을 ..
[백준/BOJ] 1700 멀티탭 스케줄링 - JAVA
·
알고리즘/문제풀이
[백준/BOJ] 1700 멀티탭 스케줄링 - JAVA - 골드1문제https://www.acmicpc.net/problem/1700문제 분석조건N개의 플러그가 있고 K번의 전기 용품을 사용한다.전기 용품의 이름은 K이하의 자연수로 순서대로 주어진다.플러그를 가장 적게 뽑을 때 플러그를 뽑는 횟수를 출력한다.풀이방법그리디 방법으로 접근한다. 이미 플러그에 꼽혀있는 물품일 경우 넘어간다.플러그가 비어있으면 빈 곳을 사용한다.플러그가 가득 차있으면뒤에 사용하지 않는 용품이 있는지 검사하여 사용하지 않는 용품을 뽑는다.전부 다시 사용되는 용품일 경우  가장 마지막에 사용되는 용품을 뽑는다.골드1 치고는 간단한 문제이다.코드import java.io.BufferedReader;import java.io.IOEx..
[백준/BOJ] 1014 컨닝 - JAVA
·
알고리즘/문제풀이
백준 BOJ 1014 컨닝 - JAVA - 플래4문제https://www.acmicpc.net/problem/1014문제 분석조건N행, M열로 배치된 좌석에서 컨닝을 못하도록 배치할 수 있는 최대 학생 수 구하기앞줄의 대각선, 좌우에 학생이 있을 경우 컨닝을 할 수 있음부서진 자리에는 앉을 수 없다.풀이방법불 끄기 문제와 비슷하게 접근하였다.(앞 행이 결정되면 뒷 행이 영향을 받음)앞행이 결정되더라도 뒷줄이 여러가지 경우의 수가 나올 수 있다는 점이 다름[백준/BOJ] 14939 불 끄기 - JAVA [백준/BOJ] 14939 불 끄기 - JAVA백준 BOJ 14939 불 끄기 - JAVA문제https://www.acmicpc.net/problem/14939문제 분석조건방의 크기는 10X10으로 일정하다..