전체 글 573

33.퇴사

📍 문제 설명 💡 접근 i번째 날부터 마지막 날까지 낼 수 있는 최대 이익을 담는 dp 테이블을 선언한다. 상담하는데 걸리는 시간이 기간안에 끝나는지에 따라 처리를 해준다. 기간안에 끝나면 현재의 이익을 과 현재 상담이 끝난 이후 날짜의 이익들을 더한값과 현재까지의 저장되어 있는 최대 이익을 비교하여 큰 값으로 갱신한다. 기간안에 끝나지 않으면 저장되어 있는 최대 이익을 dp 테이블에 담는다. 예를 들어 2일 째의 상담을 하게 되면 6일부터 상담진행이 가능(20+0)하기때문에 현재까지의 최대 이익인 3,4,5일(10+20+15) 상담으로 값을 갱신한다. 👩‍💻 코드 import java.util.*; public class Main { static int maxValue; public static voi..

Algorithm/이코테 2022.01.11

31.금광

📍 문제 설명 [문제] n x m 크기의 금광이 있습니다. 금광은 1 x 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있습니다. 채굴자는 첫 번째 열부터 출발하여 금을 캐기 시작합니다. 맨 처음에는 첫 번째 열의 어느 행에서든 출발할 수 있습니다. 이후에 m - 1번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 합니다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하세요. [입력 조건] 1. 첫째 줄에 테스트 케이스 T가 입력됩니다. (1

Algorithm/이코테 2022.01.11

30.가사 검색

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr 💡 접근 ??로 해당하는 부분을 aa, zz로 변경시켜서 그 사이에 있는 문자열들을 더해주면 되는 문제였다. ?로 시작하는 경우도 있기 때문에 뒤집힌 문자열도 따로 리스트에 담아두어서 '?'의 위치에 따라 다른 리스트들을 사용하여 구했음 👩‍💻 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String[] words = {"frodo", "front", "fro..

Algorithm/이코테 2022.01.11

29.공유기 설치

📍 문제 설명 💡 접근 설치 거리를 중간점으로 지정해놓고 이분탐색 수행하면 된다. 👩‍💻 코드 import java.util.*; public class Main { static int c; public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); c = kb.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } Arrays.sort(arr); //공유기 설치거리 int answer = 0; //공유기의 설치거리를 중간점으로 지정 int lt = 0; int rt = arr[n-1..

Algorithm/이코테 2022.01.10

28.고정점 찾기

📍 문제 설명 고정점이란, 수열의 원소 중에서 그 값이 인덱스와 동일한 원소를 의미한다. 예를 들어 수열 a = [-15, -4, 2, 8, 13]이 있을 때, a[2] = 2이므로, 고정점은 2가 된다. 하나의 수열이 N개의 서로 다른 원소를 포함하고 있으며, 모든 원소가 오름차순으로 정렬되어 있다. 이 때 이 수열에서 고정점이 있다면, 고정점을 출력하는 프로그램을 작성해라. 고정점은 최대 1개만 존재한다. 만약 고정점이 없다면 -1을 출력한다. 단, 이 문제는 시간 복잡도 O(logN)으로 알고리즘을 설계하지 않으면 '시간 초과' 판정을 받는다. 입력조건 첫째 줄에 N이 입력된다.(1 −109109 109109) 출력조건 고정점을 출력한다. 고정점이 없다면 -1을 출력한다. 입력예시 5 -15 -6 ..

Algorithm/이코테 2022.01.10

27.정렬된 배열에서 특정 수의 개수 구하기

📍 문제 설명 N개의 원소를 포함하고 있는 수열이 오름차순으로 정렬되어 있습니다. 이때 이 수열에서 x가 등장하는 횟수를 계산하세요. 단, 이 문제의 시간 복잡도 O(logN)으로 알고리즘을 설계하지 않으면 '시간 초과' 판정을 받습니다. 입력예시 7 2 1 1 2 2 2 2 3 출력예시 4 💡 접근 이분탐색을 2번 사용해야한다. x가 처음으로 나오는 부분의 인덱스와 x가 마지막으로 나오는 부분의 인덱스를 구해야함 lt = 0 rt = 7 mid = 3 arr[mid] = 2 >= 2 이므로 rt = mid; lt = 0 rt = 3 mid = 1 arr[mid] = 1 = 2 이므로 rt = mid; 해당 rt가..

Algorithm/이코테 2022.01.10

26.카드 정렬

📍 문제 설명 💡 접근 제일 작은 카드 묶음 끼리 묶어나가면서 합을 누적해나가는 문제 👩‍💻 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); PriorityQueue pq = new PriorityQueue(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { pq.offer(kb.nextInt()); } int result = 0; //제일 작은 수들끼리 합쳐나가야 비교 횟수가 최소가 된다. while(pq.size() != 1) { int a = pq..

Algorithm/이코테 2022.01.10

25.실패율

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 💡 접근 각 실패율에 대한 스테이지번호를 저장하기 위한 Stage 클래스를 정의하여 정렬 후 출력해주었다. 👩‍💻 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc..

Algorithm/이코테 2022.01.10