알고리즘
-
[백준] 22942. 데이터 체커 - Java알고리즘/백준 2021. 9. 14. 22:17
🖇️ 문제 링크 22942번: 데이터 체커 원 이동하기 2 문제를 만들고 만든 데이터가 문제의 조건에 맞는지 확인하는 코드를 작성해야한다. 해당 문제의 데이터는 아래 조건들을 만족해야한다. 모든 원의 중심 좌표는 $x$축 위에 존재해야 한다. $N$개의 원 중 임의의 두 원을 선택했을 때, 교점이 존재하지 않아야 한다. 즉, 하나의 원이 다른 원 안에 존재하거나 외부에 존재한다. https://www.acmicpc.net/problem/22942 💡 문제 분석 모든 원의 중심 좌표는 x축에 위치합니다. 원{왼쪽 좌표, 오른쪽 좌표}형태로 리스트에 저장 후, 왼쪽 좌표 기준 오름차순으로 정렬합니다. 정렬 후 인접 원과 겹치는 부분이 있다면 false를 리턴합니다. ⌨️ 코드 import java.io.*;..
-
[백준] 2800. 괄호 제거 - Java알고리즘/백준 2021. 9. 14. 22:17
🖇️ 문제 링크 2800번: 괄호 제거 https://www.acmicpc.net/problem/2800 💡 문제 분석 괄호쌍의 인덱스를 리스트에 저장해놓습니다 괄호쌍들의 집합으로 공집합을 제외하고 모든 부분집합을 생성합니다. 생성한 부분집합에 따라, 괄호쌍들을 제거하고 결과 리스트에 저장합니다. 사전순으로 정렬한 후 출력합니다 ⌨️ 코드 import java.util.*; public class Q2800 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); Deque stk = new ArrayDeque(); List pair = new ArrayList(); List ..
-
[백준] 2346. 풍선 터뜨리기 - Java알고리즘/백준 2021. 9. 14. 22:17
🖇️ 문제 링크 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있다. 각 풍선 안에는 종이가 하나 들어있고, 종이에는 -N보다 크거나 같고, N보다 작거나 같은 정수가 하나 적혀있다. 이 풍선들을 다음과 같은 규칙으로 터뜨린다. https://www.acmicpc.net/problem/2346 💡 문제 분석 덱 자료구조를 이용해서 앞, 뒤를 연결시켜줍니다. 덱에서 원소를 poll()했을 때, 자동으로 오른쪽으로 한 칸은 이동하기 때문에, 오른쪽으로 이동할 때는 1칸 덜 이동시킵니다. ⌨️ 코드 import java...
-
[백준] 2075. N번째 큰 수 - Java알고리즘/백준 2021. 9. 14. 22:17
🖇️ 문제 링크 2075번: N번째 큰 수 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다. https://www.acmicpc.net/problem/2075 💡 문제 분석 TreeSet을 통해서 내림차순 정렬을 유지합니다. 입력을 받으면서 가장 큰 n개의 수만 저장합니다. ⌨️ 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); TreeSet ts = new TreeSet(Comparator.reverseOrder()); for(int i = 0; ..
-
[백준] 13209. 검역소 - Java알고리즘/백준 2021. 9. 14. 22:16
🖇️ 문제 링크 13209번: 검역소 3번 도시와 5번 도시를 잇는 도로와 4번 도시와 3번 도시를 잇는 도로에 검역소를 설치하면 치료제를 11 인분만 비축해도 된다. 1번 도시에 전염병이 발생할 경우 1번 도시와 3번 도시의 10명의 사람들이, 2번 도시에 전염병이 발생할 경우 2번 도시와 4번 도시의 11명의 사람들이, 3번 도시에 발생할 경우 10명, 4 번 도시에 발생할 경우 11명, 5번 도시에 발생할 경우 5명이 감염될 수 있으므로 어느 경우에도 11인분의 치료제로 충분히 전염병을 막을 수 있다. https://www.acmicpc.net/problem/13209 💡 문제 분석 파라메트릭 서치로 검역소마다 limit개 이하의 치료제로 K개의 검역소를 운영할 수 있는지를 구합니다. 검역소 한 개..
-
[프로그래머스] 매출 하락 최소화 / 2021 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 14. 22:16
🖇️ 문제 링크 코딩테스트 연습 - 매출 하락 최소화 유통전문회사 카카오상사의 오너인 제이지는 새로운 사업 아이템을 구상하기 위해 전문경영인(CEO)인 프로도에게 회사의 경영을 부탁하였습니다. "카카오상사"는 직원들을 여러 개의 팀 단위로 조직을 구성하고 있으며 아래 그림은 CEO를 포함하여 10명의 직원과 4개의 팀으로 구성되어 있는 회사 조직도를 보여주고 있습니다. 그림의 조직도는 다음과 같이 설명할 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/72416 ⌨️ 코드 import java.util.*; class Solution { int[] Sales; int[][] cost = new int[300000][2]; List[] adj; pu..
-
[프로그래머스] 카드 짝 맞추기 / 2021 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 14. 22:16
🖇️ 문제 링크 코딩테스트 연습 - 카드 짝 맞추기 게임 개발자인 베로니는 개발 연습을 위해 다음과 같은 간단한 카드 짝맞추기 보드 게임을 개발해 보려고 합니다. 게임이 시작되면 화면에는 카드 16장이 뒷면을 위로하여 4 x 4 크기의 격자 형태로 표시되어 있습니다. 각 카드의 앞면에는 카카오프렌즈 캐릭터 그림이 그려져 있으며, 8가지의 캐릭터 그림이 그려진 카드가 각기 2장씩 화면에 무작위로 배치되어 있습니다. https://programmers.co.kr/learn/courses/30/lessons/72415 ⌨️ 코드 import java.util.*; class Solution { final int INF = (int)1e9; int[][] Board; public int solution(int[..
-
[프로그래머스] 광고 삽입 / 2021 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 14. 22:16
🖇️ 문제 링크 코딩테스트 연습 - 광고 삽입 카카오TV에서 유명한 크리에이터로 활동 중인 죠르디는 환경 단체로부터 자신의 가장 인기있는 동영상에 지구온난화의 심각성을 알리기 위한 공익광고를 넣어 달라는 요청을 받았습니다. 평소에 환경 문제에 관심을 가지고 있던 "죠르디"는 요청을 받아들였고 광고효과를 높이기 위해 시청자들이 가장 많이 보는 구간에 공익광고를 넣으려고 합니다. https://programmers.co.kr/learn/courses/30/lessons/72414 ⌨️ 코드 class Solution { public String solution(String play_time, String adv_time, String[] logs) { int[] time = new int[100 * 60 *..