목록algorithm/BOJ (26)
connecting the dots
문제 www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 풀이 처음에 조금 헤맸지만, 알고보니 쉬운 문제였다. BFS를 사용해 연결된 연합을 찾고 visited 처리해주어서 다시 방문하지 않도록 한다. 연합을 찾을 때마다 해당 맵을 update 해준다! 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.u..
문제 www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.StringTokenizer; public class Main { static Buffer..
문제 풀이 블록을 가로지르지 않고 주어진 상점까지의 최소 거리를 모두 더해주어야 하는 문제 나의 풀이 방법은 다음과 같다 Store라는 클래스를 만들어주고 location과 direction을 저장할 수 있도록 했다 동근이의 direction을 기준으로 왼쪽/오른쪽 direction을 리턴해주는 left/right 함수를 만들었다 동근이의 direction에 따라 거리를 구한다 사실 direction을 찾아준 거 외에는 모든 경우의 수를 따져서 푼 문제 / 이렇게 가장 바깥쪽만 사용하는 문제는 직선이라고 생각하고 배열로 풀면 더 간단할 수 있음을 알게 됐다 / 다시 풀어봐야겠다 코드 import java.util.*; import java.io.*; public class Main { static Buf..
문제 www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 풀이 처음 설계 설계 수정 for문을 돌면서 바로 빙산을 녹여주고 다음 빙산으로 나니까 이전 빙산이 0까지 녹아버리는 경우 문제가 발생했다 / 따라서 해당 칸에 대한 주변 바다 개수를 melt라는 배열에 저장해준 뒤 나중에 한번에 빼주었다 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.String..