구현
-
[백준]22238: 🔫가희와 btd5 - JAVA문제풀이/백준 2021. 8. 20. 15:07
[백준]22238: 가희와 btd5 22238번: 가희와 btd5 첫 번째 공격은 개틀링 거너가 좌표 (0,0)에서 (1,1)방향에 있는 풍선들의 체력을 3 감소 시키는 공격을 하는 것입니다. [그림1] 개틀링 거너의 첫 공격 첫 공격 후, (1, 1)에 있었던 체력이 3이였던 www.acmicpc.net 풀이 🪑 근 3일동안 풀었던 문제이다. 출력초과와 틀렸습니다와 시간초과와 싸웠다. 알고리즘 유형이라고 한다면, 구현 + 이분탐색 이라고 생각한다. 문제에 있는 함정을 유의하자! 📝 문제를 정리해 보자! Drating Gun Tower는 0,0에 하나 있다. Darting Gun Tower가 공격을 하면 공격 방향에 놓인 모든 풍선들은 동일한 damage의 피해를 입는다. Darting Gun Tower..
-
[백준]8972: 미친 아두이노 - JAVA문제풀이/백준 2021. 8. 11. 15:48
[백준]8972: 미친 아두이노 8972번: 미친 아두이노 요즘 종수는 아두이노를 이용해 "Robots"이라는 게임을 만들었다. 종수는 아두이노 한대를 조정하며, 미친 아두이노를 피해다녀야 한다. 미친 아두이노는 종수의 아두이노를 향해 점점 다가온다. www.acmicpc.net 풀이 🪑 구현 + 탐색 문제였다! 구현 문제 특징은 문제는 어렵지 않으나 구현하는 과정에서 놓칠 수 있는 조건들이 발생하기 쉽고, 문제의 조건에 맞게 구현하되 시간초과가 발생하지 않도록 구현해 주어야 한다. 구현 문제를 풀 때에는 조건을 꼼꼼히! 확인해 주어야 나중에 고생을 덜한다. 📝 문제의 조건을 꼼꼼히! 확인해 보자. 종수의 아두이노를 먼저 이동시킨다. 가만히 있는 경우를 포함해 9가지 경우의 이동 범위를 갖는다. 종수의 ..
-
[백준]13904: 과제 - JAVA문제풀이/백준 2021. 8. 5. 21:02
[백준]13904: 과제 13904번: 과제 예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다. www.acmicpc.net 풀이 🪑 골드 문제 이길래 처음에 괜히 어렵게 생각해서 DP인가.. 했는데 그냥 구현문제였다. 📝 문제를 정리해 보자! 하루에 하나의 과제를 할 수 있다. 과제를 마무리 할 때마다 마무리한 과제의 점수를 얻는다. 🔧 문제를 풀어보자! 입력받은 과제들의 정보를 날짜 순서대로 내림차순 한다. 제일 마지막 날짜에서 부터 가능한 과제를 하나씩 우선순위 큐에 넣어준다. 우선순위 큐에서 가장 큰 점수를 갖는 과제를 하나씩 꺼내어 결과에 더해준다. 🙋♀️ 일단 예제를 함께 따라가 보자. 어떤 ..
-
[백준]20926: 얼음 미로 - JAVA문제풀이/백준 2021. 7. 23. 17:23
[백준]20926: 얼음 미로 풀이 🪑 구현 + 다익스트라 문제이다. 📝문제의 조건을 정리해보자. 얼음 미로에서는 한 방향으로 이동시 바위나 출구를 만날때 까지 멈출 수 없다. 바깥은 절벽이다. T: 상하좌우로 이동할 수 있다. R: 통과할 수 없으며 부딪히면 멈춘다 H: 이곳에 빠지면 탈출할 수 없다. E: 미로를 탈출하는 유일한 출구이다. 각 위치마다 미끌시간이 존재하며 탈출할 수 있는 최단 미끌시간을 구한다. 🔧 다음과 같은 풀이를 생각해 주었다. 다익스트라를 사용한다. 한번 이동할 때 해당 방향으로 이동할 수 있는지 먼저 확인한다. 이동 가능하면 그 방향으로 갈 수 있는 곳까지 간다. 도착한 후 더 짧은 미끌시간을 계산해 준다. 도착 노드의 최단 미끌시간을 출력한다. 📌 처음엔 70 ~ 80프로 ..
-
[프로그래머스]로또의 최고 순위와 최저 순위 - JAVA문제풀이/프로그래머스 2021. 7. 4. 14:55
[프로그래머스]로또의 최고 순위와 최저 순위 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 풀이 🪑 구현, 시뮬레이션 유형의 문제이다. 🔧 로또 번호가 맞는지 확인해 주기 위해 반복문을 2중으로 사용하여 확인해 주었다. 확인하면서 '0'으로 표시된 부분의 개수도 함께 count해 주었다. 🔧 최고 순위는 최대로 로또 번호를 맞췄을때 이므로 현재 맞는 로또 번호의 개수 + '0'의 개수로 계산해 주었다. 🔧 순위를 지정하는 부분은 배열을 사용하였다. 인덱스를 로또..
-
[백준]14890: 경사로 - JAVA문제풀이/백준 2021. 7. 3. 15:00
[백준]14890: 경사로 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 🪑 조건에 따라 문제를 잘 읽고 풀어야 하는 구현 문제였다. 확인해 주어야 할 방향은 총 2가지 방향이므로 (열, 행) 열을 확인하는 함수, 행을 확인하는 함수 두개로 나누어 풀어주었다. 🔎 확인할때는 한 방향으로 확인하며 현재 계단의 높이와 다음 계단의 높이차를 확인해 주었다. 계단의 높이차가 1을 초과하면 문제의 조건에 나와있는 "계단의 높이차는 1이어야 한다"를 만족하지 못하므로 바로 false를 반환하도록 하였다. 계단의 높이차가 1이더라도 다음 ..
-
[백준]16234: 인구 이동 - JAVA문제풀이/백준 2021. 5. 30. 15:37
문제 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 풀이 구현 능력에 더불어 탐색 알고리즘을 활용할 수 있는지 묻는 문제이다. 구현 문제들은 문제가 길고 복잡한 경우가 많아 세분화 하여 구현해 주기 위해 먼저 어떤 순서대로 구현할지 작업을 분류하고 시작하는 것이 좋다. 나는 아래와 같은 순서로 구현해 주었다. 1. 순회를 하며 방문하지 않은 노드를 방문한다. 이 과정은 모든 노드를 방문할 때까지 반복된다. 2. 노드를 방문할 때..
-
[백준]17417: 게리맨더링 - JAVA문제풀이/백준 2021. 5. 26. 12:59
[백준]17417: 게리맨더링 https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net 풀이 구현능력 + 완전탐색 + DFS/BFS 개념을 모두 활용해 볼 수 있는 문제이다. 우선, 문제의 조건을 구현 순서에 맞게 정리해보자. 지역에 두 개의 선거구 중에 하나를 할당한다. (1 또는 2로 표현) 나눠진 지역들이 두개의 구역으로 연결되는지 확인한다. (DFS/BFS 탐색으로 구함) 두 지역의 차이 값 중에서 최소값을 찾아준다. 하나하나씩 살펴보쟝. 1. 지역에 두 개의 선거구..