백준 78

[백준]14719번 빗물 - Java

문제 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 풀이 어떻게 풀지 생각하는데 약간 시간이 걸렸다 제일 왼쪽이랑 오른쪽 블록을 제외한 그 사이에 있는 블록들 머리 위에만 빗물이 쌓일 수 있기 때문에, 그 점을 생각하면 쉽게 풀림! 자세한 설명은 주석을 달아놨으니 참고하셈! 코드 // 14719번 빗물 // https://www.acmicpc.net/problem/14719 package BAEKJOON; import jav..

[백준]9250번 맥주 마시면서 걸어가기 - Java

문제 https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 풀이 플로이드 와샬 문제이다! 최근에 배웠음. 처음 설명을 들을 때는 되게 쉽네~ 라고 생각했지만 막상 문제를 풀어보니까 잘 모르겠더라 ㅎㅎㅎ 다익스트라가 한 정점에서 모든 정점으로의 최소 비용 거리를 구하는 알고리즘이라면, 플로이드 와샬은 모든 정점에서 모든 정점으로의 최소 비용 거리를 알 수 있음!! 다만 3중 for문을 돌기 때문에 크기가 크면 터질 수도 있으니까 조심하자!!! 경..

[백준]2960번 에라토스테네스의 체 - Java

문제 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 풀이 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 이 사진처럼 체에 거르듯이 거르는 것이다! 코드 // 2960번 에라토스테네스의 체 // https://www.acmicpc.net/problem/2960 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java...

[백준]3020번 개똥벌레 - Java

문제 https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 풀이 처음에 문제를 읽었을 때 정말 쉬운 문제라고 생각했음 근데 또 문제 안읽어서 주어지는 수들의 범위를 체크를 못함 또 또또 ㅠㅠㅠㅠ 1번 방법(오답) 그냥 높이별 부딪히는 횟수를 계산할 배열을 만들고 2중 for문을 돌면서 해당 배열에 저장해줌! 이렇게 풀면 당연히 시간초과,,,, 2번 방법(정답) 이분 탐색! 오답 코드 // 3020번 개똥벌레 // https://www.acmicpc.ne..

[백준]7576번 토마토 - Java

문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 토마토가 다 익는데까지 며칠이 걸렸는지 출력하는 문제이기 때문에 DFS로 풀면 답을 찾기 힘들 것이다. 그래서 BFS로 풀었음! 1번 방법(오답) BFS할 때 사용하는 큐의 Tomato 클래스는 익은 토마토의 위치와 며칠째에 익었는지를 나타내는 day를 멤버변수로 함! 큐에서 하나씩 빼서 다음 칸으로 갈 수 있는지 검사하며, 다음 칸을 큐에 넣어줄 때 day+1을 하면서..

[백준]14502번 연구소 - Java

문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 허허,,, 풀긴 풀었는데 너무 더럽게 푼 것 같다,,, 느낌만 그런건가...?? 조합 + DFS로 풀었음! 중간에 막힌 부분이 있었는데 dfs돌려서 안전 영역 최대값을 조사한 후 map 배열을 초기화 해줄 때 초기화 시점이 헷갈려서 자꾸 벽을 하나도 안세울 때로 초기화를 해버려서 좀 시간이 걸렸다 ㅠㅠ 그래서 벽을 2개 세웠을 때의 map을 tempMap에 잠시 저장해놨다가 벽 3개 세우고 dfs돌..

[백준]14503번 로봇 청소기 - Java

문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 풀이 후,,, 나는 구현 문제가 왜 이렇게 어려운지 모르겠다 ㅠㅠㅠ 많이 풀어봐야 될 듯하다,, 음 뭐랄까 dfs인데 횟수 제한이 있는 dfs 문제?? 2a번 단계가 4번 연속으로 실행되면 멈추거나 후진해야되니까? 개인적으로 포인트는 1. 왼쪽으로 돌거나 뒤로 후진할 때의 방향 설정이랑 2. return을 해줘야하는 위치 라고 생각한다! 걔네들을 어떻게 했는지는 밑에 코드의 주석을 보면 알..

[백준]1475번 방 번호 - Java

문제 https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 크기 10인 1차원 배열을 만들어서 반복문을 돌면서 인덱스에 해당하는 번호가 나올 때마다 증가를 시켜줌 반복문이 끝마녀 그 중 최댓값을 출력하면 되는데, 6이나 9인 경우에는 int temp = arr[6] + arr[9]; temp = temp / 2 + temp % 2; 6이랑 9를 뒤집어서 사용할 수 있으므로 이렇게 해줘야 됨 그 후에 다시 최댓값을 찾아서 출력하면 끝! 아예 처음에 배열을 크기 9로 만들고 입력받을 때 6이랑 9를 같은거라고 인식해서 입력 받아서 풀 수도 있을 ..

[백준]1789번 수들의 합 - Java

문제 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 풀이 처음엔 문제를 읽고 너무 어렵게 생각해서 DP 문제인가 아니면 재귀로 접근해야하나 고민했는데 S가 10인 경우, 100인 경우를 예시로 생각해보니까 단순히 계산해주면 될 것 같아서 단순 계산 문제로 접근했다. 그런데 분명히 답은 맞는데 런타임 에러가 나서 다시 문제를 읽어보니까 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. 범위가 딱 long 타입의 범위였다. 그래서 sc.nextLong으로 받아서 해결! 코드 // 1789번 수들의 합 // https://www.acmicp..

[백준]14720번 우유 축제 - Java

문제 https://www.acmicpc.net/problem/14720 14720번: 우유 축제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후 www.acmicpc.net 풀이 쉬운 문제임 주석 참고하셈! 코드 // 14720번 우유 축제 // https://www.acmicpc.net/problem/14720 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer..

[백준]2239번 스도쿠 - Java

문제 https://www.acmicpc.net/problem/2239 2239번: 스도쿠 스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다 www.acmicpc.net 풀이 구현 + 백트래킹 문제 처음에는 입력을 받으면서 큐에 0인 칸의 인덱스(행, 열)을 넣어주었다. poll해서 해당 값을 사용하고 정답이 아닌 경우에는 재귀를 return해서 다시 그 값을 사용해야하는데 큐를 쓰면 그게 불가능해서 다시 구현했다. 다시 구현할 때에는 Queue가 아닌 ArrayList로 구현했다. ArrayList에 숫자가 채워지지 않은 칸(0인 칸)을 넣어주고 인덱..

[백준]2579번 계단 오르기 - Java

문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 풀이 1로 만들기 같은 유형의 DP 문제이다. https://seokmimmmmmmmm.tistory.com/82 [백준]1463번 1로 만들기 - Java 문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이 흔한 DP 유형의 문제임 하향식, 상향식 ..

[백준]14501번 퇴사 - Java

문제 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 풀이 DP 문제임. 1차원 정답 배열(dp)를 만들어서 풀었음 하루가 지날 때마다 최댓값을 dp 배열에 갱신해주는게 포인트 ! 아직 헷갈려서 담에 한번 더 풀어봐야겠음 T, P, dp 배열을 N+6으로 크기를 설정해준 이유는 [맨처음 0번 인덱스 + (1 ≤ Ti ≤ 5)] 이거 때문이다. 코드 // 14501번 퇴사 // https://www.acmicpc.net/problem/14501 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; i..

[백준]4963번 섬의 개수 - Java

문제 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 그냥 지금까지 많이 풀었던 탐색 문제이다. DFS로 풀었다. 음 뭐랄까 쉬워서 별로 할 말이 없다 https://seokmimmmmmmmm.tistory.com/42?category=1004588 [백준]2468번 안전 영역 - Java 문제 https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서..

[백준]13565번 침투 - Java

문제 https://www.acmicpc.net/problem/13565 13565번: 침투 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않 www.acmicpc.net 풀이 간단한 DFS, BFS 문제인 듯하다 그래서 DFS로, BFS로 각각 사용해서 풀어봤음 일단 DFS는 그냥 맨 윗줄에서 0이면 DFS 들어가고 돌면서 0인 칸을 2로 바꿔줌 위에서 0인 애들 다 돌렸으면 맨 밑줄에서 2인 애가 나오면 그건 전기가 통하는 거고 안나오면 안통하는거 그니까 2가 나오면 YES 출력하고 System.exit(0);으로 시스템..

[백준]4485번 녹색 옷 입은 애가 젤다지? - Java

문제 https://www.acmicpc.net/problem/4485 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net 풀이 문제가 재밌음 그니까 문제 푸는게 재밌는게 아니라 문제가 그니까 그냥 읽는게 재밌다고 암튼 나는 다익스트라로 풀었음 그냥 뭔가 포인트나 함정같은 부분은 없는 기본적인??? 다익스트라 문제인듯???? 자세한 설명은 주석으로 코드 // 4485번 녹색 옷 입은 애가 젤다지? // https://www.acmicpc.net/problem/4485 package BAEKJOO..

[백준]1149번 RGB거리 - Java

문제 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 풀이 얘도 DP 문제임 모든 최적해를 구해야하는데 새로운 2차원 배열에 저장을 하면서 구한다고 생각하면 편함 이런 유형의 문제를 많이 풀어놔서 익숙하게 만들어 놔야 겠음 ㅎㅎ 코드 // 1149번 RGB거리 // https://www.acmicpc.net/problem/1149 package BAEKJOON; import java.io.*; import java.util..

[백준]1463번 1로 만들기 - Java

문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이 흔한 DP 유형의 문제임 하향식, 상향식 두 가지 방식으로 풀었음! 처음 생각하는 방식이 좀 어렵고 떠올리기만 하면 쉽게 풀 수 있는 듯??? 코드 // 1463번 1로 만들기 [DP(동적계획법) - 1로 만들기 문제] // https://www.acmicpc.net/problem/1463 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public c..

[백준]2638번 치즈 - Java

문제 https://www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net 풀이 https://seokmimmmmmmmm.tistory.com/78 [백준]2636번 치즈 - Java 문제 https://www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부 seokmimmmmmmmm.tist..

[백준]9372번 상근이의 여행 - Java

문제 https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 풀이 좀 어이가 없는 문제인 것 같다 비행기를 몇번 타는지를 출력하는게 아니라 비행기의 종류의 최소 개수를 출력해야됨! 근데 그래프는 연결 그래프이고 최소 개수를 구하는 거니까 그냥 (정점 - 1)개가 정답이다 코드 // 9372번 상근이의 여행 // https://www.acmicpc.net/problem/9372 package BAEKJOON; imp..