Seize your moment! 👾

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

백준 30

[Eric's 백준] 1987번 - 알파벳 - Java

문제 오늘도 백준문제 달리는 Eric입니다! 오늘 풀어볼 문제는 백준 1987번 알파벳 이라는 문제 입니다. 일반적인 dfs 문제랑 다르게, graph가 0과 1로 이루어 진것이 아니라, 알파벳으로 이루어져 있고, 이미 지나간 알파벳은 다시 지날 수 없다는 조건이 있습니다. 그래서 저는 이 부분을 boolean[] visited = new boolean[26] 으로 설정하고 만약 해당 칸을 지나가면, 값을 true로 변경하도록 하였습니다. 그리고 dfs를 돌면서 만약 해당 graph 위치에 도착했을때 visited가 false 이면 상,하,좌,우 로 이동하면서 dfs를 반복합니다. 만약 돌다가 visited가 true 이면 이미 지나갔던 알파벳을 만난것이므로 answer 에 max 값으로 입력합니다. 그..

[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 백준] 27467번 - 수학 퀴즈 - Java - KSA Automata Winter Contest

문제 안녕하세요! Eric 입니다! 오늘은 제가 어제 KSA Automata Winter Contest 대회에 나가서 풀었던 문제 중 C번 문제 였던 수학퀴즈 라는 문제를 풀어 보도록 하겠습니다! 고등학교 이후에는 방정식을 쓴적이 별로 없어서 기억이 가물가물해서 처음에는 문제를 이해하는데 무슨말이지? 하고 생각했었는데, 아직은 그래도 제 뇌가 살아 있나봅니다 금방 기억나서 문제를 풀었습니다. 풀이 문제를 보시면 x^2+x+1 = 0 을 통해서 하나의 규칙을 볼 수 있습니다. 그건 x^3=1 이라는 사실입니다. 그렇게 되면 저같은 경우에는 pw + q 부분에서 하나의 규칙대로 밑 사진을 보시는것처럼 x의 제곱수에 들어가는 수가 3으로 나눈 값의 나머지에 따라서 하나의 규칙대로 수를 더해 주면 되는 사실을 ..

[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 백준] 9095번 - 1,2,3 더하기 - Java

오늘 풀어볼 문제는 1,2,3 더하기 입니다 해당 문제는 DP 로 풀수 있습니다! 제가 하단처럼 문제를 풀은 이유는 n = 1 인경우는 -> 1가지 1 n = 2 인 경우는 -> 2가지 1 + 1 2 n = 3 인 경우 -> 4가지 1 + 1 + 1 1 + 2 2+ 1 3 이제 n = 4 일 경우는 n이 3일때 값 1 + 1 + 1 + 1 1 + 2 + 1 2 + 1 + 1 3 + 1 n이 2일대 의 값 1 + 1 + 2 2 + 1 n이 1일때의 값 1 + 3 위처럼 n =4 일경우( n = 3 )+ (n = 2) + (n =1 ) 값을 더해주면 나오는 DP 를 이용하면 arr[n] = arr[n-1] + arr[n-2] +arr[n-3] 의 식을 도출해 낼 수 있습니다! 하지만 n =1, n=2 , n..

[Eric's 백준] 1157번 - 단어공부 - Java

안녕하세요! Eric 입니다! 오늘 제가 풀어볼 문제는 문자열 문제 백준 1157번 단어 공부 라는 문제입니다! 저는 해당문제를 HashMap 을 이용해서 풀어보았습니다! 또한 toUpperCase 와 toCharArray 도 이용하였습니다! 우선 주어진 문자를 받아서 toUpperCase 로 모두 대문자로 만들고, 해당 문자들을 toCharArray 로 각각의 char 로 잘게 자른다음에 HashMap 에 key 값을 알파벳으로 넣음과 동시에 각각의 알파벳의 개수를 value 값으로 넣어주었습니다. 그리고 for문 을 통해서 keySet()을 이용하여 개수가 많은 알파벳을 char answer 로 받았으며, 만약 for문을 돌다가 max 값과 동일한 값이 나오면 ?가 답으로 나오도록 설정하였습니다! 더..