코딩테스트-알고리즘/백준 BOJ 39

[백준 BOJ/Silver III] 9095번 : 1, 2, 3 더하기

https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net DP는 간단한 규칙을 딱 찾는게 포인트인듯하다 그래서 더 어렵다 구구절절 길게 코드를 쓴다고 해결되는게 아니라서😥 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new..

[백준 BOJ/Gold IV] 4179번 : 불!

https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 현재 각 큐에 담겨있는만큼 꺼내서 상하좌우를 체크해주는데 처음에는 지훈이 이동 체크 -> 불 이동 체크 순서로 진행하며 다음으로 넘어갔다 예제는 통과했지만 채점을 하다가 틀렸다고 나오는거다😐😐 반례를 여러가지 찾아서 넣어보다가 3 4 ##.# FJ.# ##F# ans : IMPOSSIBLE 이거를 넣어보고 왜 틀렸는지 알게되었다 F가 두개 이상 동시에 퍼질때 지훈이가 이동할 수 있..

[백준 BOJ/Silver I] 7562번 : 나이트의 이동

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 최종 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Deque; import java.util.StringTokenizer; public class Main { static int[] dx = ..

[백준 BOJ/Silver III] 1463번 : 1로 만들기

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 가능한 경우들을 확인하며 1을 만났을때 이동한 최소의 수(num[1]-1)를 최종 답으로 출력하면 된다 최종 코드 package boj1463; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Deque; public class Main { static int N; static int[] num; static De..

[백준 BOJ/Silver III] 11659번 : 구간 합 구하기 4

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 처음에는 단순하게 생각했다 합 구해야하는 구간을 for문 범위에 넣고 구하면되는거 아닌가? 하고 풀었는데 시간 초과,,😮😮 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 N과 M의 범위가 이렇기 때문에 최대를 생각했을때 N*M이 되고 시간초과가 날 수 밖에 없는 조건이었던거다 누적합을 이용해서 구해야하는 문제였다!!! 입력받은 숫자를 배열에 넣을때 앞에 나온 숫자..

[백준 BOJ/Silver I] 2468번 : 안전 영역

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 다 풀고나니 굉장히 복잡하게 푼거같다 내일 스터디에서 이야기 나눠보고 다시 풀어봐야겠음!! ** 1 boolean[] height = new boolean[101]; - 물에 잠기는 모든 경우의 수를 생각해봐야하기 때문에 존재하는 높이를 boolean 배열에 true로 표시해주었다 - 높이 범위가 100까지로 정해져있어서 크기 101인 배열로 선언해주었다 2 for (int i = 0; i < 101; ..

[백준 BOJ/Gold IV] 3055번 : 탈출

https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 1 처음 입력받을 때 물 위치, 고스도치 위치를 각각 큐에 담아준다 또한 굴의 위치를 알아두기 위해 굴의 행, 열을 a, b에 각각 저장해둔다 for(int i = 0; i < R; i++) { String[] str2 = br.readLine().split(""); for(int j = 0; j < C; j++) { map[i][j] = str2[j]; if (map[i][j].equals("*")) wat..

[백준 BOJ/Gold V] 7569번 : 토마토

https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 아래 문제에서 조금 더 발전된 버전이다 https://fruits2lim.tistory.com/entry/%EB%B0%B1%EC%A4%80-BOJGold-V-7576%EB%B2%88-%ED%86%A0%EB%A7%88%ED%86%A0 [백준 BOJ/Gold V] 7576번 : 토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에..

[백준 BOJ/Gold IV] 14502번 : 연구소

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 정말 잔인한 문제였다 dfs와 bfs를 함께 써야 풀 수 있는 문제😨😨 세상엔 참 다양한 문제가 있음을 느꼈다 이 문제는 벽 3개를 다양하게 세워보면서 2가 가장 덜 퍼지는(=0이 가장 많이 남는) 경우를 구해야한다 1. 벽 3개를 다양하게 세우기 static void dfs(int wall) { // 벽 세우는 경우의 수 if (wall == 3) { bfs(); // 벽이 3개 세워지면 바이러스 퍼지는거 ..

[백준 BOJ/Silver I] 1697번 : 숨바꼭질

정처기 필기와 기술 세미나 준비로 정신없어서 못 풀다가 드디어 다 끝나고!!!!!!!! 오랜만에 푼다 다시 꾸준히 열심히 풀어야겠다💪💪 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net - bfs 방식을 이용 - 정해진 숫자에 가장 빨리 닿을 수 있는 경우만 확인하면 되기 때문에 이미 숫자가 채워진 자리는 값을 바꿔주지 않아도 된다 - x-1, x+1, 2*x인 경우를 모두 확인해주어야하며 값이 채워져있지 않다면 이전값..