Seize your moment! 👾

안녕하세요. Eric입니다. 제 블로그에 방문해주셔서 감사합니다.

알고리즘 19

[Eric's 백준] 1012번 - 유기농배추 🥬 - Java

문제 안녕하세요! Eric 입니다! 오늘 풀어볼 문제는 백준 1012번 , 유기농 배추 입니다! 그러면 문제를 풀어보도록 하죠! 풀이 우선 유기농배추를 만들기위해서 배추흰지렁이 를 깔아야합니다. 깔기위해서는 배추가 있는 위치에 깔아야며, 그 지렁이가 상하좌우 로 움직이면서 배추를 보호한다 이를 저는 dfs를 통해서 구연해 보았습니다. 우선 주어진 test case를 int로 받고, 그때의 주어진 배추밭의 길이 m과 n을 받아서 이를 통해서 boolean[] graph를 만듭니다. 이는 배추가 있는 위치에 true값을 주며, 배추가 없는 위치에는 false로 만들어줍니다. 그리고 동일한 사이지의 boolean[] visited 배열을 만들고 dfs가 돌면서 해당 지점을 방문하면 true로 값을 변환해줍니다..

[Eric's 백준] 9020번 - 골드바흐의 추측 - Java

문제 이번문제는 방금전 풀었던 문제 백준 골드바흐의 추측 6588번 해당문제랑 동일하지만, 출력부분에서는 조금 다릅니다. 출력부분에서 6588번은 최대의 차이가 나도록 출력하였다면, 9020번은 최소의 차이가 나도록 출력하고 있습니다. 해설 그래서 저는 출력부분에서 for문을 돌을때 시작을 n/2 부터 시작해서 돕니다. 그 이유는 어차피 값의 합은 n/2 보다 작은 값들로 구성될테니까요! 그렇게해서 문제를 풀게되면.. 코드 이상 오늘도 백준 풀은 Eric 이었습니다.

[Eric's 백준] 13900번 - 순서쌍의 곱의합 - Java

안녕하세요! Eric 입니다! 오늘 풀어볼 문제는 백준 13900번 순서쌍의 곱의합 입니다! 우선 제가 처음에 시간 초과로 틀렸던 방법의 코드를 보고 왜 시간초과가 났는지 알아보고 맞는 방법이 무엇인가 알아보도록 하죠! 시간초과 코드 (정답 아님) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class N13900 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputSt..

[Eric's 백준] 27465번 - 소수가 아닌 수 - Java - KSA Automata Winter Contest

이번에 풀어볼 문제는 마찬가지로 KSA Automata Winter Contest 의 A번 문항으로 나왔던 문제 입니다. 이 문제는 그래도 생각보다 간단합니다 임의의 정수 N을 받고서 그 N값 '이상'의 임의의 소수가 아닌 수를 출력하면 되는 문제 입니다. 코드 저의 경우에는 isPrime() 이라는 method를 만들고나서, N이상부터 while문을 돌면서 소수가 아닌수가 나오면 while문을 멈추면서 출력을 하도록 코드를 구현해보았습니다. isPrime() method에서 Math.sqrt를 사용하였는데요, 이는 2부터 루트 n 까지의 범위에서 소수를 체크판별해주는 함수입니다. 범위가 2에서 루트n 까지 인 이유는 소수는 1과 자기 자신으로만 나누어지는 숫자이기 때문이죠!

[Eric's 백준] 1759번 - 암호 만들기 - JAVA

안녕하세요! 오늘 풀어볼 문제는 백준 1759번 암호만들기 문제 입니다! 해당 문제는 백트레킹을 이용해서 문제를 풀 수 있습니다! 풀이 우선 암호로 만들 수 있는 알파벳을 char[] list 에 넣습니다. 그리고 char[] list 를 알파벳 순으로 정렬합니다. 정렬하는 이유는 문제의 출력 부분에서 정렬된 순서로 출력되라고 해서입니다. 그리고 정렬된 알파벳을 backTracking 메소드를 통해서 메소드를 실행합니다. 실행하면서 start 가 L과 동일해지면, checkTheCode 이라는 메소드를 통해서 한개의 모음과 두개 이상의 자음이 포함되어있는지 체크하고나서 출력해줍니다. 만약 start 가 L과 동일하지 않는다면 for문을 돌면서 하나 하나씩 list에 있는 알파벳을 char[] code 에..

[Eric's 백준] 2583번 - 영역 구하기 - Java

안뇽하세요! Eric 입니다! 오늘은 제가 bfs 문제를 하나 풀어보려 합니다! 문제는 백준 2583번 영역구하기 문제 입니다! 문제 해설 우선문제를 풀기위해서는 map 이라는 int[][] 배열을 만들어 줍니다. 이때의 int[][] map = new intp[M][N] 의 크기를 가집니다. 왜냐하면 해당 모눈종이가 입력의 첫번째 줄에서 그렇게 주어지므로 그리고 입력의 첫번째 줄에서 마지막으로 받는 K값은 for 문을 통해서 K번 돌아서 입력에서 주어진 값을 map 에 표시합니다. 그리고 bfs 를 돌면서 해당 하는 영역의 면적을 구합니다. bfs 를 돌면서 dx, dy를 통해서 시작점을 기준으로 상,하,좌,우 의 map 값이 0 이면 해당영역으로 이동하면서 영역의 크기를 증가시키고, 만약 map값이 ..

[Eric's 백준] 1946번 - 신입 사원 - Java

안녕하세요! Eric 입니다! 오늘 풀어볼 문제는 백준 1946번 신입사원 문제 입니다. 해당문제는 그리디 유형으로 풀어보았습니다. 우선 예시에서 나온 값을 저는 오늘도 그림으로 그려서 문제를 풀어 보았습니다. 그리디 유형에서 우선 각각의 test 케이스마다 저는 A를 기준으로 오름차순으로 정리를 우선 하였습니다. ( Comparble 이용) 그러면 B 기준이 왔다갔다하면서 정렬이 안되어 있을텐데요, 여기에서 우선 A를 기준으로 오름차순이 되어있으므로, 하나하나 내려가면서 보면 (1 ,4) 와 (2, 3) 을 비교하면 (2, 3) 이 A랭크에서는 비록 지고 있지만, B랭크에서는 (1, 4)의 4 보다 등수가 좋으니 cnt + 을 해주었습니다. 마찬가지로 ( 2 ,3 ) 과 (3, 2)로 내려갔을때 B랭크..

[Eric's 백준] 2217번 - 로프 - Java

안녕하세요! Eric 입니다! 오늘 풀어볼 문제는 백준 2217번 로프 문제 입니다. 그리디 유형입니다(욕심쟁이) 문제 문제풀이입니다. 제가 생각한 문제 풀이 방법은 하단의 사진 처럼 우선 내림차순으로 숫자를 정렬 한 후 하단의 배열에서 하나씩 추가하면서 어떤 값이 최대 값이 되는지 구해보았습니다. 예를들어 10 하나만 선택하게 되면 최대무게는 max = 10 이고, 10, 9 를 선택하면 9 x 2 의 무게를 들 수 있으므로 18 이므로 기존의 max= 10 값 보다는 크니까 max를 18로 교환 하고 이런 식으로 하나씩 추가하면서 최대 무게가 될때까지 for문을 돌았습니다. 코드

[Eric's 백준] 11727번 - 2 x n 타일링 2 - Java

안녕하세요! Eric 입니다! 오늘 풀어볼 문제는 백준 11727번 2 x n 타일링2 라는 문제입니다! 어제 풀었던 https://just09.tistory.com/338 [Eric's 백준] 11726번 - 2 x n 타일링 - Java 풀이방법 저는 어느때와 같이 그림을 그려서 문제를 풀어보았습니다. (연필로 그림 그릴때 소리가 너무 좋아요) 하단의 그림을 보면 알 수 있듯 n = 3 부터는 피보나치수열을 따르는 사실을 그림 just09.tistory.com 이 문제와 도 문제 내용이 흡사하지만, 11726번 문제랑은 다른점은 구현하는 규칙 부분이 다르더라구요! 저는 오늘도 문제를 그림을 그려가며 풀어 보았습니다! 위의 그림을 보면 알 수 있듯 하나의 규칙성이 보입니다. f(n) 의 값을 구한다고 ..