문제풀이/백준83 [JAVA] BOJ 백준 2011번 - 암호코드 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/2011 2. 내가 푼 방법 dp 알고리즘에서 bottom-up 방식을 사용해 풀었다. 보통은 top-down 방식을 사용하는데, 이번 문제는 문자열의 제일 첫 번째 문자부터 확인하면서 카운팅 해야 하기 때문에 bottom-up 방식을 사용했다. 첫 번째 문자는 무조건 한 가지 방법을 가지고 있으므로 dp[0] = 1 로 두었고, 그다음 문자부터 입력받은 문자열의 길이 - 1 까지 값을 확인하면 된다. 현재 가리키고 있는 문자열이 0일 경우, 이전 문자열은 1 또는 2만 가능 : 결국 반드시 이전 문자열과 결합해야 하기 때문에 dp[i-2] 값을 그대로 갖고 온다. 현재 가리키고 있는 문.. 2023. 9. 27. [JAVA] BOJ 백준 16928번 - 뱀과 사다리 게임 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/16928 2. 내가 푼 방법 전형적인 BFS 알고리즘 문제이다. 현재 칸이 뱀 혹은 사다리가 있는 칸이라면 이어진 칸으로 이동하고, 뱀 혹은 사다리가 없는 칸이라면 주사위를 굴려서 이동하면 된다. Tuple 클래스는 현재 번호인 v와, 주사위를 굴린 횟수인 cnt를 포함하고 있고, cnt가 작은 값을 높은 우선순위로 설정해 주었다. 그 후, 우선순위 큐에 Tuple 클래스를 넣어 100까지 도착하도록 했다. public static void solution() { result = Integer.MAX_VALUE; play(); } public static void play() { Pri.. 2023. 9. 27. [JAVA] BOJ 백준 15684번 - 사다리 조작 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/15684 2. 내가 푼 방법 완전 탐색이 필요한 문제이다. 이 문제를 풀 때는 가로, 세로 길이를 주의해야 한다고 생각한다. 가로 길이 N과 세로 길이 H를 입력받고, boolean 자료형을 가진 사다리 배열을 선언해준다. 사다리 배열 범위를 N+1, H+1로 지정해 줬는데, arr[i][j] = true라면 세로줄 i와 i+1을 잇는 j번째 가로줄로 설정해두었다. StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextTo.. 2023. 9. 27. [JAVA] BOJ 백준 12851번 - 숨바꼭질2 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 2. 내가 푼 방법 BFS 알고리즘을 이용했고, time 배열에 도착한 최소 시간을 비교하면서 풀어주었다. time 변수의 범위는 time = new int[100001]로 지정했는데, 수빈이와 동생이 갈 수 있는 범위가 0 ~ 100000이기 때문이다. Tuple 클래스를 큐에 넣어주면서 풀었는데,.. 2023. 9. 27. [JAVA] BOJ 백준 1109번 - 섬 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/1109 1109번: 섬 첫째 줄에 높이가 0인 섬의 개수, 높이가 1인 섬의 개수, …, 높이가 M인 섬의 개수 까지 공백으로 구분해서 출력한다. 만약 섬이 하나도 없을 때는 -1을 출력한다. www.acmicpc.net 2. 내가 푼 방법 처음엔 꽤나 어려웠던 문제였는데, 풀고 나니 단순하게 생각할수록 더 빨리 풀 수 있었을 거라고 생각한다. 먼저 모든 섬을 BFS 알고리즘을 통해 라벨링해준다. 바다를 -1로, 섬을 1부터 아래 코드와 같이 라벨링해주었다. import java.util.*; import java.io.*; class Main { static int N; static .. 2023. 7. 28. [JAVA] BOJ 백준 11404번 - 플로이드 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/11404 2. 내가 푼 방법 플루이드 와샬 알고리즘을 사용해 문제를 풀었다. 주의해야 할 두 가지만 설명하자면, 첫 번째로 입력 값으로 동일한 경로(출발지, 도착지)에 다른 비용을 가지는 값이 있을 수도 있다는 점과 두 번째로 단방향 연결이므로 플루이드 와샬 알고리즘을 작성할 때 0 값을 처리해주어야 한다는 점을 조심해야한다. if 문을 통해 더 작은 비용을 가지는 값을 저장하도록 해주었다. int N = Integer.parseInt(br.readLine()); int M = Integer.parseInt(br.readLine()); arr = new int[N+1][N+1]; for.. 2023. 6. 20. 이전 1 ··· 7 8 9 10 11 12 13 14 다음