Algorithm/baekjoon 126

배열 돌리기 1

📍 문제 설명 💡 접근 문제에서 주어진대로 구현했다. 타 블로그는 방향을 설정하여 범위를 벗어났을 때 방향을 전환해주는 식으로 작성했는데 이렇게 푸는 방식이 문제의 의도에 좀 더 부합한 답인듯하다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, r, answer, cnt; static int[] arr; static long[] dp; static int[][] board, result; static boolean[][] visited; static int[..

Algorithm/baekjoon 2022.02.21

배열 돌리기 3

📍 문제 설명 https://www.acmicpc.net/problem/16935 16935번: 배열 돌리기 3 크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 → www.acmicpc.net 💡 접근 문제에서 주어진대로 구현하는 문제... 시간이 좀 걸렸다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class M..

Algorithm/baekjoon 2022.02.20

알고스팟

📍 문제 설명 💡 접근 방문체크하는 배열을 사용하는데 n, m, 벽부순 횟수로 중복 방문 안되도록 하였다. 벽을 적게 부순 횟수부터 계산 하기 위해서 우선순위 큐 사용하였다. -> 어차피 벽인 지점은 방문 할 수 없으므로 2차원 배열 사용해도 된다.. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, answer, cnt; static int[] arr, dis = {-1, 1, 2}; static long[] dp; static int[][] board; st..

Algorithm/baekjoon 2022.02.20

이모티콘

📍 문제 설명 💡 접근 시간, 이모티콘의 갯수, 클립보드에 저장된 이모티콘 갯수를 저장해나간다. 방문처리를 할 때 현재 이모티콘 갯수와 클립보드의 갯수에 따라서 체크해줘야한다. 이미 처리된 부분이 나중에 계산된 부분한테 덮어씌워질 수 있다. 붙여넣기를 할 때 배열의 범위에 주의해야줘야 한다. 1.클립보드의 갯수가 n보다 크면 큐에 넣으면 안된다. ->계속 저장해서 클립보드에 저장하여 출력하는 경우 n인 부분에서 최솟값이 될거다. 2.1)과 마찬가지로 2000이 넘는 부분도 큐에 넣으면 안된다. 클립보드가 999일 때 이모티콘이 1000이면 그게 답이 될 수 있다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import ..

Algorithm/baekjoon 2022.02.20

숨바꼭질 4

📍 문제 설명 💡 접근 자신의 부모 인덱스를 방문시 마다 입력해두고 스택 이용해서 출력하면 되는 문제 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, answer, cnt, second; static int[] arr, dis = {-1, 1, 2}; static long[] dp; static int[][] board; static int[] visited, parent; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static ArrayList..

Algorithm/baekjoon 2022.02.20

숨바꼭질 3

📍 문제 설명 💡 접근 1초 후에 2*X의 위치로 가는게 아닌 0초 후에 2*X의 위치로 가는 조건으로 변경되었다. 방문했더라도 기록되어있는 방문 시각보다 현재 방문하려는 방문 시각이 더 작을 때는 값을 변경시켜주면 된다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, answer, cnt, second; static int[] arr, dis = {-1, 1, 2}; static long[] dp; static int[][] board; static int[] visited; static int[] dx ..

Algorithm/baekjoon 2022.02.20

숨바꼭질 2

📍 문제 설명 💡 접근 인프런 추천 문제에서 풀었던 문제인데 문제 순서대로 다시 풀어보기로 했다. 모든 경로에 대해서 방문 체크를 하지 않는다면 시간 초과 판정을 받을거다. 특정 지점에 대해서 방문 체크를 하지 않아야한다. 그 이전의 값에도 빠른 시간이 될 수 있기 때문에 바로 직점에 대해서만 체크하지 않는 것은 오류가 있다. 같은 시간에 방문했는데 똑같은 지점일 때는 그 중복된 지점들이 빠른 시간이 될수도 있으니 그대로 넣어주면 된다. 같은 시간에 방문한 곳인지 확인하기 위해서 boolean이 아닌 int로 걸린 시간을 넣어주었다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; publ..

Algorithm/baekjoon 2022.02.19

숨바꼭질

📍 문제 설명 💡 접근 3가지의 이동 가능 위치에 따라서 이동시켜주면된다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, answer, cnt, second; static int[] arr, dis = {-1, 1, 2}; static long[] dp; static int[][] board; static boolean[] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static ArrayList list; static Strin..

Algorithm/baekjoon 2022.02.19

토마토

📍 문제 설명 💡 접근 예전 강의에서 배웠던 문제 BFS의 시작지점이 여러개다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, answer, cnt; static int[][] board; static int[] arr; static long[] dp; static boolean[][] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static ArrayList list = new ArrayList(); static StringBu..

Algorithm/baekjoon 2022.02.19