본문 바로가기

분류 전체보기58

[이코테][Java] 경쟁적 전염 [문제링크]https://www.acmicpc.net/problem/18405문제 설명하나의 칸의 크기가 1 ×1인 N × N 크기의 시험관 안에 바이러스가 존재할 수 있고, 모든 바이러스는 1 ~ k번까지의 바이러스 종류 중 하나이다. - 시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식한다.- 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다.- 이미 어떠한 바이러스가 존재한다면 그곳에는 다른 바이러스가 들어갈 수 없다.S초가 지난 후에 (X, Y)에 존재하는 바이러스의 종류를 출력하세요. 만약 해당 위치에 바이러스가 존재하지 않는다면 0 출력 입력조건첫째 줄에 시험관의 크기 N, 바이러스 종류의 개수 K둘째줄 ~ N+1번째 줄 까지 시험관 안에 바이러스 정보N+2.. 2025. 2. 14.
[이코테][Java] 만들 수 없는 금액 문제 설명N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 입력조건첫째 줄에 동전의 개수를 나타내는 양의 정수 N(1 둘째 줄에 각 동전의 화폐단위를 나타내는 N개의 자연수출력조건주어진 동전들로 만들 수 없는 양의 정수 금액 중 최솟값입출력 예시입력예시출력예시53 2 1 1 98    문제 풀이입력받은 n개의 동전들을 오름차순 정렬한 후, 동전들로 1부터 차례대로 특정 금액(target)을 만들 수 있는지 확인한다.target >= (현재 동전금액) 일 경우, 현재 동전으로 target을 만들 수 있다 → target 값 업데이트여기서 target이 특정 값일 때, 1 ~ (target-1)까지의 모든 금액을 만들 수 있다고 가정한다. 예시) n=5, {3,.. 2025. 2. 14.
[이코테][Java] 무지의 먹방 라이브 문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42891 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명무지가 1부터 N번까지의 음식을 음식번호가 증가하는 순서대로 먹기 시작한다.먹방을 시작한 지 K초 후에 네트워크 장애로 인해 방송이 잠시 중단된 후, 다시 먹기 시작할 때 몇 번 음식부터 먹어야 하는지 구한다.만약 더 섭취해야 할 음식이 없다면 -1을 반환한다. 입력조건각 음식을 모두 먹는데 필요한 시간이 들어있는 배열 food_times방송이 중단되 시간 k출력조건k입출력 예시입력예시출력예시[3, 1, 2]51    문제.. 2025. 2. 14.
[이코테][Java] 볼링공 고르기 문제 설명A, B 두 사람이 서로 무게가 다른 볼링공을 골라 볼링을 치고 있습니다.볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여됩니다. 볼링공의 무게는 1부터 M까지 자연수의 형태로 존재하고, 같은 무게의 공은 서로 다른 공으로 간주합니다.두 사람이  서로 다른 무게의 볼링공을 고르는 경우의 수를 구하는 프로그램을 작성하세요. 입력조건첫째 줄에 볼링공의 개수 N, 공의 최대 무게 M(1 ≤ N ≤ 1000, 1 ≤ M ≤ 10)둘째 줄에 각 볼링공의 무게 K(1 ≤ K ≤ M)출력조건두 사람이 볼링공을 고르는 경우의 수입출력 예시 입력예시출력예시5 31 3 2 3 288 51 5 4 3 2 4 5 225   문제 풀이n개의 볼링공을 입력받은 후, 순차적으.. 2025. 2. 14.
[알고리즘] 이진 탐색(Binary Search) 정렬된 데이터에서 탐색 범위를 절반씩 줄여나가면서 특정 값을 찾는 알고리즘탐색할 때마다 원소의 개수가 절반으로 줄어들기 때문에 속도가 빠르다시간복잡도 - O(log N)정렬된 배열에서 배열의 중간값(mid)을 구한다.중간값과 탐색 값(target)을 비교한다.   - 중간 값과 탐색 값이 같으면 종료(mid == target)   - 중간 값보다 탐색 값이 크면 중간 값 기준 오른쪽 구역을 탐색(mid    - 중간 값보다 탐색 값이 작으면 중간 값 기준 왼쪽 구역을 탐색(mid > target)탐색 값이 나올 때까지 이 과정을 반복한다.  이진탐색 예시int[] arr ={0, 2, 4, 6, 8, 10, 12, 14, 16}이고, target=4인 경우, 이진 탐색으로 target을 찾는 방법은 다음.. 2025. 2. 13.
[이코테][Java] 고정점 찾기 문제 설명고정점이란, 수열의 원소 중에서 원소 값 = 원소의 인덱스 인 원소를 말한다.예를 들어 수열 a = {-15, -4, 2, 8, 13}이 있을 때, a[2] = 2로 고정점은 2가 된다.하나의 수열이 N개의 서로 다른 원소를 포함하고 있고 오름차순으로 정렬되어 있을 때, 이 수열에서 고정점을 출력하는 프로그램을 작성하세요고정점은 최대 1개만 존재하고, 만약 없다면 -1 출력시간복잡도 O(log N)으로 알고리즘을 설계하지 않으면 '시간초과 판정' 입력조건첫째 줄에 N둘째 줄에 N개의 원소출력조건고정점 출력. 없으면 -1입출력 예시입력예시출력예시5-15 -6 1 3 737-15 -4 2 8 9 13 1527-15 -4 3 8 9 13 15-1    문제 풀이이진탐색을 수행해서 고정점을 찾는다.im.. 2025. 2. 12.
[이코테][Java] 정렬된 배열에서 특정 수의 개수 구하기 문제 설명N개의 원소를 포함하고 있는 수열이 오름차순으로 정렬되어 있을 때, 이 수열에서 x가 등장하는 횟수를 계산하세요.예를 들어 수열 {1, 1, 2, 2, 2, 2, 3}이 있을 때 x=2라면, 4를 출력시간복잡도 O(log N)으로 알고리즘을 설계하지 않으면 '시간초과 판정' 입력조건첫째 줄에 N과 x둘째 줄에 n개의 원소출력조건수열에서 값이 x인 원소의 개수값이 x인 원소가 없다면 -1입출력 예시 입력예시출력예시7 21 1 2 2 2 2 347 41 1 2 2 2 2 3 -1    문제 풀이 시간복잡도 O(log N) 로 설계해야하기 때문에 순차 탐색으로는 풀 수 없다. → 이진탐색으로 풀이x가 처음으로 등장하는 위치와 마지막 위치를 찾아서 빼주면 x의 개수를 구할 수 있다.firstIndex(.. 2025. 2. 11.
[이코테] 이진탐색(Binary Search) 이진탐색(Binary Search)정렬된 데이터에서 탐색 범위를 절반씩 줄여나가면서 검색 값을 찾는 알고리즘탐색할 때마다 원소의 개수가 절반으로 줄어들기 때문에 속도가 빠르다시간복잡도 - O(log N)배열의 중간값(mid)을 구한다.중간값과 검색 값(target)을 비교한다.   - 중간 값과 검색 값이 같으면 종료(mid == target)   - 중간 값보다 검색 값이 크면 중간 값 기준 오른쪽 구역을 탐색(mid    - 중간 값보다 검색 값이 작으면 중간 값 기준 왼쪽 구역을 탐색(mid > target)예제 1) 부품찾기전자 매장에 부품이 N개 있고, 각 부품은 정수 형태의 고유한 번호가 있다. 어느날 손님이 M개 종류의 부품을 대량으로 구매를 요청해서 견적서를 작성해야할 때, 가게 안에 부품.. 2025. 2. 10.
[백준][Java] 10025번 : 적록색약 [문제 링크]https://www.acmicpc.net/problem/10026문제 설명적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못해서 적록색약이 아닌 사람이 보는 그림과 다를 수 있다.크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나누어지며, 하나의 구역은  상하좌우로 인접해있는 같은 색상일 경우 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 색상이라 한다)예를 들어, 그림이 아래와 같은 경우에RRRBBGGBBBBBBRRBBRRRRRRRR적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4개이다. (빨강 2, 파랑 1, 초록 1) 하지만, 적록색약인 사람은 구역을 3개 볼 수 있다. (빨강-초록.. 2025. 2. 6.
[백준][Java] 2583번 : 영역 구하기 [문제 링크]https://www.acmicpc.net/problem/2583문제 설명눈금의 간격이 1인 M×N 크기의 모눈종이 위에 K개의 직사각형을 그릴 때, K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. M, N과 K 그리고 K개의 직사각형의 좌표가 주어질 때, K개의 직사각형 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어지는지, 그리고 분리된 각 영역의 넓이가 얼마인지를 구하여 이를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 M, N, K둘째줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 두 꼭짓점의 x, y값(직사각형의 왼쪽 아래 꼭짓점, 오른쪽 위 꼭짓점)출력분리되어 나눠지는 영역의 개수각 영역의 넓이입출력 예시입력예시출력예시5 7 3 0.. 2025. 2. 6.