코딩테스트/백준_Java
-
Q. 1012 자바 : 유기농 배추코딩테스트/백준_Java 2023. 3. 30. 22:49
Q. 1012 자바 : 유기농 배추 문제 : bo.kr/1012 실버 2 난이도의 문제이다. 이전 글에서 푼 문제인 단지번호 붙이기와 거의 비슷한 문제이다. 배추를 재배하는 땅들의 좌표가 주어진다. 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면 될 때, 총 몇 마리의 지렁이가 필요한지 계산하는 문제이다. 지도의 크기 M, N이 주어지는데, 격자형 그래프 순회 문제의 경우 모든 점을 순회해야 하므로 시간 복잡도는 O(NM)이고, 문제에서N, M의 최대값은 각각 50이므로시간초과는 걱정하지 않아도 된다. 또한 입력을 받을 때 자료형은 0과 1로만 구분되므로 boolean을 사용했다. 문제를 푼 방식은 1. 탐색이 가능한 경우(arr[y][x] = true) 방문하고, 이후에 탐색을 진행하며 방문 ..
-
Q. 2667 자바 : 단지번호붙이기코딩테스트/백준_Java 2023. 3. 29. 13:35
Q. 2667 자바 : 단지번호붙이기 문제 : boj.kr/2667 실버 1 난이도의 문제이다. 0과 1로 구성된 격자형 그래프가 주어지고, 1(=집을 의미)이 모여 있는 곳을 단지로 정의했을 때, 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 문제이다. 지도의 크기 N이 주어지는데, 격자형 그래프 순회 문제의 경우 모든 점을 순회해야 하므로 시간 복잡도는 O(N^2)이고,문제에서N의 최대값은 25이므로 시간초과는 걱정하지 않아도 된다. 또한 입력을 받을 때 자료형은 0과 1로만 구분되므로 boolean을 사용했다. 문제를 푼 방식은 1. 탐색이 가능한 경우(arr[y][x] = true) 방문하고, 이후에 탐색을 진행하며 방문 횟수를 저장한다. (이 때 방문한 경우 방문..
-
Q. 1260 자바 : DFS와 BFS코딩테스트/백준_Java 2023. 3. 28. 12:02
Q. 1260 자바 : DFS와 BFS 문제 :boj.kr/1260 실버 2 난이도의 문제이다. 그래프가 주어졌을 때 이를 DFS, BFS로 순회하고 결과를 출력하는 문제이다. 주의해야 할 점은 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문 한다는 내용 때문에 그래프를 입력 받은 뒤 정렬이 한번 필요하다. 정점이 N, 간선이 M으로 주어지므로 시간복잡도는 아래와 같다. 1. 모든 정점에 대한 정렬 - O(N * M log M) 2. DFS, BFS 순회 - O(2 * N * M) (ArrayList를 이용한 그래프 탐색의 경우 정점 * 간선 만큼의 시간복잡도를 가짐) 따라서 두 식을 더하면 약 O(N * M) 정도의 시간복잡도를 가진다고 예상할 수 있다. 이 문제의 경우 정..
-
Q. 20366 자바 : 같이 눈사람 만들래?코딩테스트/백준_Java 2023. 3. 27. 22:27
문제 :boj.kr/20366 골드 3 난이도의 문제이다. 투 포인터 강의를 듣고나서, 투 포인터 유형의 다른 문제들을 찾아보다가 발견한 문제이다. 처음에 문제를 봤을 때는 어떻게 접근해야 할 지 감이 안잡혔었는데, 감이 안잡혀서 검색을 했더니, 세 용액 문제와 비슷한, 네 용액 문제로 풀면 된다는 내용이 있길래 그 내용만 보고 추측해서 풀었더니 다행히 풀렸다.(다른 블로그 코드 참고x) 문제를 보면 하나의 눈사람은 두 개의 눈덩이로 구성되고 눈덩이가 주어지면, 두 눈사람의 키 차이가 가장 작은 값을 구하라는 문제이다. 1. 투 포인터 알고리즘을 이용해 값을 조정하려면, 눈덩이들이 정렬된 상태여야 하므로 먼저 정렬을 해준다. - O(N log N) 2. 네 개의 값을 뽑아야 하므로 먼저 두 개의 값을 선..
-
Q.11559 자바 : Puyo Puyo(G4)코딩테스트/백준_Java 2023. 1. 10. 23:30
문제 : https://www.acmicpc.net/problem/11559 일하면서 풀어서 2일정도 걸려서 풀게 된 문제이다. 이 문제를 풀고 있을 때 코딩테스트를 모르는 친구가 코딩테스트가 뭐냐? 라고 물어본적이 있는데 이 문제 설명을 읽게 하니까 이해를 했다고 하면서 왜 이런걸 푸냐고 하긴 했다. 개인적으로 푸는 과정 자체는 상당히 고통스럽기도 하고 한 2~3일정도(일하면서) 박치기를 하다 보면 찾아보고 싶은 욕구를 참기가 꽤나 힘들다. 하지만 풀었을 때의 그 성취감이 상당하기 때문에 그리고 코딩테스트를 보는 기업이 많으므로 준비하고 있다. 문제 더보기 뿌요뿌요의 룰은 다음과 같다. 필드에 여러 가지 색깔의 뿌요를 놓는다. 뿌요는 중력의 영향을 받아 아래에 바닥이나 다른 뿌요가 나올 때까지 아래로 ..
-
Q.16973 자바 : 직사각형 탈출(G4)코딩테스트/백준_Java 2023. 1. 4. 14:30
문제 : https://www.acmicpc.net/problem/16973 더보기 크기가 N×M인 격자판에 크기가 H×W인 직사각형이 놓여 있다. 격자판은 크기가 1×1인 칸으로 나누어져 있다. 격자판의 가장 왼쪽 위 칸은 (1, 1), 가장 오른쪽 아래 칸은 (N, M)이다. 직사각형의 가장 왼쪽 위칸은 (Sr, Sc)에 있을 때, 이 직사각형의 가장 왼쪽 위칸을 (Fr, Fc)로 이동시키기 위한 최소 이동 횟수를 구해보자. 격자판의 각 칸에는 빈 칸 또는 벽이 있다. 직사각형은 벽이 있는 칸에 있을 수 없다. 또한, 직사각형은 격자판을 벗어날 수 없다. 직사각형은 한 번에 왼쪽, 오른쪽, 위, 아래 중 한 방향으로 한 칸 이동시킬 수 있다. 직사각형의 크기와 좌표를 주고, 장애물을 피해 원하는 좌표..
-
Q.7576 자바: 토마토(G5)코딩테스트/백준_Java 2022. 10. 24. 10:23
문제 : https://www.acmicpc.net/problem/7576 더보기 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되..
-
Q.11729 자바 : 하노이 탑 이동 순서(S1)코딩테스트/백준_Java 2022. 9. 2. 01:41
문제 : https://www.acmicpc.net/problem/11729 더보기 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 재귀함수 연습을 하다보니 개념은 이해가 됬지만 이를 코드로 작성하려다 보니 머리속에서는 정리가 잘 안되서 적어보면서 생각을 정리해 보려고 한다..