본문 바로가기

Algorithm & SQL/BAEKJOON120

백준 JAVA 1012 유기농 배추 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 한 달만에 다시 dfs 를 풀어봤는데 기억이 잘 안나서 접근 방법을 보고 같은 코드가 아닌 다른 코드로 생각해서 풀었다. 시간이 40ms 정도 줄었는데, 아예 처음 접했을 때보다는 조금 구현이 수월해진 것 같다. 원래 visited 배열을 사용해서 풀었는데, 이번엔 없이 풀을 수 있을 것 같아 만들지 않고 풀었다. 단순히 0 , 1 만을 비교하는 것으로 구현했다. static void dfs(int x, in.. 2022. 9. 10.
백준 JAVA 1629 곱셈 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 거의 한시간 반동안 잡고있었는데, 못풀어서 다른 블로그의 도움을 받았다. 모듈러 연산과 재귀를 이용해야 하는문제였고, 코드만 보니 이해가 안가서 몇개의 예제를 만들어서 하나하나 분석하니 이해가 됐다. 3~4일 정도 지나고 다시 트라이 해봐야겠다. 가장 중요한 로직이다. cal 메서드를 만들었는데, 결론은 모듈러 연산을 이용한 코드이다. b 만큼 제곱해야하므로, 2로 b == 0 or b== 1 때까지 나누어야 한다. 또한, b가 짝수일때, 홀수일때를 나누어야 한.. 2022. 9. 9.
백준 JAVA 3986 좋은 단어 스택을 활용해서 풀어야하는 문제이다. for (int j = 0; j < str.length(); j++) { if (st.isEmpty() || (st.peek() != str.charAt(j))) { st.push(str.charAt(j)); } else { st.pop(); } } 알파벳을 넣을때의 조건이다. 처음에는 스택이 아예 비어있으니, peek을 사용할 수 없다. 따라서 isEmpty() 를 추가해서 비교 후 추가할 수 있게 작성했다. push 할 조건이 아니라면 ( peek했는데 삽입할 알파벳과 같다면 ) pop 으로 꺼내준다 if (st.isEmpty()) { count++; } 비어있으면 조건에 만족하기 때문에, count 를 추가시켜준다 package BAEKJOON.Silver.Ⅳ;.. 2022. 9. 9.
백준 JAVA 1213 팰린드롬 만들기 https://www.acmicpc.net/problem/1213 2022. 9. 8.
백준 JAVA 3085 사탕 게임 https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 2주? 전에 한번 봤는데 다시 풀어보려고 했는데 실패했다. 문제는 이해가 되는데 구현이 안되니 답답하다. 2~3일 뒤에 다시한번 풀 예정. // 가로 , 세로 비교하면서 먹을 수 있는 사탕의 최대 개수 찾기 static void check() { // 가로체크 for (int i = 0; i < n; i++) { int count = 1; for (int j = 0; j < n-1; j++) { if ( arr[i][j] == arr[i][j+1]) { count++; } else { count = 1; } max.. 2022. 9. 6.
백준 JAVA 2979 트럭 주차 https://www.acmicpc.net/problem/2979 2979번: 트럭 주차 첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장 www.acmicpc.net int[] arr = new int[101]; 입력으로 주어지는 시간은 1~100 사이이므로 배열을 먼저 선언해준다. 선언해주는 이유는 , 3개의 트럭의 시간을 각각 넣어 계산하려는 이유이다. for (int i = 0; i < 3; i++) { int start = sc.nextInt(); int end = sc.nextInt(); for (int j = start; j < .. 2022. 9. 5.
백준 JAVA 1940 주몽 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 먼저 풀었던 방법은 이중 for문으로 푸는 것이었다. 배열중에 2개를 선택해서 m 과 같은 값을 만드는 것이었기 때문이다. 이중 for문으로 해도 정답은 통과했지만, 지금은 내가 투포인터 연습문제를 풀고 있기 때문에, 다시 고민했다. 오름차순으로 배열을 정렬하고, 앞에서부터 더하게 되면 이중for문이랑 다를게 없었다. [ 1, 2 , 3 ,4 ,5 ,6 ] 일 때 1 + .. 2022. 9. 2.
백준 JAVA 1620 나는야 포켓몬 마스터 이다솜 https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net (쓸데없이) 문제가 상당히 길어서 직접 들어가서 확인하는 것이 좋을 것 같다. 시간초과를 얻어맞고 HashMap을 이용해 풀었다. HashMap map1 = new HashMap(); HashMap map2 = new HashMap(); HashMap을 2개 사용했다. 1개는 번호를 키값으로, 나머지 1개는 포켓몬몬스터 이름을 키값으로 받는 HashMap이다. for .. 2022. 9. 1.
백준 JAVA 2559 수열 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 조금만 고민하면 어렵지 않게 풀리는 문제였다. 제출하고 한번 틀렸는데 이유는 아래와 같다. // 입력받은 값들이 전부 - 일때도 있기때문에 0으로 초기화하면 틀림 int answer = Integer.MIN_VALUE; 조건에서 -100 ~ 100 까지의 값이 들어올 수 있으므로, 전부다 음수만 들어올 수 있다. 수정 전에 0 으로 초기화를 했는데, 이러면 답이 0 으로 밖에 나올 수.. 2022. 9. 1.