목록CodingTest/Java (342)
기록방
👉 문제링크 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 🔸 문제 분석 🔸 N개의 수직선 위 집들의 좌표가 입력으로 주어진다. C개의 공유기를 설치하려는데, 가장 가까운 공유기의 거리를 최대로 하고자 한다. 공유기의 거리를 이분탐색과 같은 형태인 매개변수 탐색으로 찾아낸다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; im..
👉 문제링크 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 🔸 문제 분석 🔸 N자리의 수열 중 합이 S이상이 되는 수열 중 가장 짧은 것의 길이를 출력한다. N은 10,000 이하의 자연수이다. S는 0이상, 100,000,000(1억) 이하이다. 수열의 모든 수를 확인하긴 해야한다. 합이 S가 되는 것을 효율적이게 비교하기 위해서, 매번 전부 더하는 것이 아니라 하나씩 더하고 빼며 진행한다. 따라서 투포인터 알고리즘을 사용한다. 🔸 코드 🔸 import java.io.BufferedReade..
👉 문제링크 2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 🔸 문제 분석 🔸 육지는 상하좌우로 건널 수 있는 땅이다. 두 보물은 한 육지에 있으며, 최단 거리가 가장 긴 두 위치에 있다. bfs로 가장 멀리 퍼진곳을 찾으면, 최단 거리 중 가장 긴 거리이다. 두 보물 사이를 이동하는 시간을 출력한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Ar..
👉 문제링크 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 🔸 문제 분석 🔸 배열에 자연수를 넣거나, 배열의 최대값을 꺼내출력하는 연산이 100,000번까지 주어진다. 최대값을 빠르게 구하기 위해, 매번 정렬하는 것이 아니라 최대힙을 구현해야 한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collections; impo..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 숫자로 이루어진 문자열 t와 p가 있다. 문자열 t에서 문자열 p 길이 만큼의 부분 문자열 중 p보다 작은거나 같은 수를 카운트한다. t의 부분 문자열과 p를 비교해야 한다. p의 길이가 최대 18이므로 long으로 변환해서 대소 비교할 수 있다. 문자 하나씩 비교해 대소를 비교할 수 있다. 🔸 코드 🔸 class Solution { public int solution(String t, String p) { int answer = 0; int size = p.length(); c..