본문 바로가기
반응형

알고리즘/구현10

백준 16234번 : 인구 이동 java 이 문제는 데이터들을 입력 받아서 주변과의 차이가 L 이상, R 이하라면 각각의 셀에 있는 값들을 모두 더해서 평균값으로 만들어주는 알고리즘입니다. 예제 1번을 보시면 이를 더 잘 이해하실 수 있습니다. 코드를 보면서 추가로 설명해드리도록 하겠습니다. import java.io.*; import java.util.*; public class Main { static int N, L, R; static int[] dR = {1, -1, 0, 0}; static int[] dC = {0, 0, 1, -1}; static int[][] map; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedRe.. 2022. 6. 23.
백준 3190번 : 뱀 java 이 문제는 사과가 있는 곳을 입력받아서 뱀이 사과가 있는 곳을 지나치면 뱀의 길이를 늘이고 아니면 유지하게 합니다. 그리고 시간이 경과함에 따라서 방향을 회전시키게 해서 뱀이 벽이나 자신의 몸에 머리를 박으면 게임이 끝나게 합니다. 이 문제를 예제 1번을 이용하여 설명드리겠습니다. 예제 1번의 초기 상태는 다음과 같습니다. 위에 spin 큐에 들어가 있는 것들은 X초 후에 어떤 방향으로 회전하는가를 나타냅니다. L이면 보고 있는 방향의 왼쪽으로 회전, D면 오른쪽으로 회전합니다. 사과를 먹으면 길이가 늘어나고 먹지 않으면 길이를 유지합니다. 이제 뱀을 이동시켜보겠습니다. 우선 문제의 조건에 맞게 뱀을 한 칸 앞으로 보냈습니다. 그러나 사과를 먹지 않았으므로 길이가 늘지 않아 빨간 화살표를 지워줍니다. 다.. 2022. 6. 18.
백준 14891번 : 톱니바퀴 java 이 문제는 문제에서 주어진 조건에 따라서 문제를 해결할 수 있는 알고리즘을 구현하는 문제입니다. 이 문제에서 주어진 조건에 대해서 설명해드리겠습니다. 위의 그림을 보시면 2번 톱니바퀴를 시계방향으로 굴린다고 가정했을 때 1번 톱니바퀴는 2번 톱니바퀴와 맞닿은 톱니가 서로 반대의 극을 가지고 있기 때문에 2번 톱니바퀴의 반대 방향인 반시계 방향으로 돌아가게 됩니다. 그리고 3번 톱니바퀴는 2번 톱니바퀴와 맞닿은 부분이 같은 극을 가지고 있기 때문에 돌아가지 않습니다. 이 알고리즘을 기반으로 코드를 구현해보도록 하였습니다. import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws .. 2022. 6. 17.
백준 1065번 : 한수 java 이 문제는 N보다 작거나 같은 한수의 개수를 출력하는 문제입니다. 한수란 어떤 양의 정수 X의 각 자리가 등차수열을 이루는 수입니다. 이러한 수의 예시는 123, 135, 159와 같은 수들이 있습니다. 문제에 대한 코드를 보시면 바로 이해하실 수 있으실 겁니다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int count = 0; for(int i = 1; i 2022. 6. 17.
백준 13335번 : 트럭 java 이 문제는 자료 구조 큐를 이용하여 위에서 주어진 조건에 맞게 최단시간을 구하는 알고리즘입니다. 저는 이 문제를 풀기 위해서 대기 중인 트럭들을 보관할 큐와 다리 위에 올라간 트럭들을 저장할 큐를 사용하였습니다. 각각의 큐에는 입력받은 자료의 무게와 인덱스를 저장하게 해서 문제를 해결하였습니다. 그림을 통해서 이를 자세히 설명드리도록 하겠습니다. 위의 그림은 예제 1번을 표현한 그림입니다. truck 큐에 들어가 있는 자료들은 다리에 올라가기 위해서 대기 중인 트럭들을 의미합니다. bridge 큐에 들어있는 자료들은 다리 위에 올라가 있는 트럭들을 의미합니다. location배열은 몇 시간 뒤면 트럭이 다리에서 빠져나오는지를 확인하기 위해서 만든 배열입니다. 트럭이 bridge 큐에 들어가면 해당 ind.. 2022. 6. 16.
백준 14503번 : 로봇 청소기 java 이 문제는 주어진 조건에 맞게 코드를 만드는 문제입니다. 그림을 통해서 이 문제에 대한 설명을 드리도록 하겠습니다. 위의 그림과 같이 자료가 주어졌다고 가정해보도록 하겠습니다. 또한 로봇 청소기가 있는 위치는(1, 2)로 주어졌고, 방향은 2인 남쪽이 주어졌다고 하겠습니다. 이를 지도 위에 나타내 보겠습니다. 그럼 위의 그림과 같은 모양이 됩니다. 이때 문제의 1번 작업을 해줍니다. 청소한 위치는 빨간색으로 표시하겠습니다. 1번 작업을 하였으니 이제 2번 작업을 실행시켜 줍니다. 로봇은 남쪽을 바라보고 있었으니 이 로봇의 왼쪽은 동쪽이 됩니다. 로봇의 동쪽에는 청소하지 않은 구역이 있고 벽이 아니니 이 방향으로 이동시켜줍니다. 위와 같은 그림이 됩니다. 1번 작업을 통해 현재 있는 칸을 청소해준 다음 2.. 2022. 6. 16.
백준 17144번 : 미세먼지 안녕! java 이 문제는 조건에 따라서 미세먼지를 확산시킨 후 공기청정기를 작동시키는 문제입니다. 저는 이 문제를 확산시키는 함수와 공기청정기에 의해서 미세먼지들이 이동하는 함수로 나누어 풀었습니다. 우선 확산시키는 함수는 map배열을 검사하며 미세먼지의 농도가 5 이상일 때만 ArraList에 입력했습니다. 그 후 ArrayList에 있는 데이터들을 꺼내서 그 주변으로 확산시켰습니다. 미세먼지의 농도가 5 이상일 때 바로 확산시키지 않은 이유는 바로 확산시킨다면 확산된 미세먼지가 주변에 영향을 주어서 제대로 정답을 구하기 어렵기 때문입니다. 그 후 미세먼지들을 이동시키는 함수를 실행시켰습니다. 코드를 보면 이해하실 수 있으실 겁니다. import java.util.*; import java.io.*; public c.. 2022. 6. 9.
백준 1138번 : 한 줄로 서기 java 이 문제는 키가 1 2 3 4인 사람이 순서대로 있을 때 자신의 왼쪽에 몇 명이 있었는지를 입력받아 자신의 자리를 찾아가는 문제입니다. 이를 그림으로 설명드리겠습니다. 위의 그림은 예제 1번의 상황을 나타낸 것입니다. 이제 문제를 해결하는 과정을 보여드리겠습니다. 우선 키가 1인 사람은 왼쪽에 자신보다 키가 큰 사람의 수가 2이니 2번 자리로 들어갑니다. 키가 2인 사람은 왼쪽에 자신보다 키가 큰 사람이 1명이니 1번 자리로 들어갑니다. 다음은 키가 3인 사람의 순서입니다. 키가 3인 사람은 왼쪽에 자신보다 키가 큰 사람의 수가 1이므로 우선 1번 자리로 갑니다. 하지만 1번 자리는 이미 자른 사람이 자리를 하고 있기 때문에 그 뒷자리를 봅니다. 우선 2번 자리가 비어있나 확인하지만 2번 자리도 이미 차.. 2022. 6. 7.
반응형