본문 바로가기

자바 코딩테스트17

백준 4158번 CD 문제상근이와 선영이는 동시에 가지고 있는 CD를 팔려고 한다. CD를 몇 개나 팔 수 있을까?입력입력은 여러 개의 테스트 케이스로 이루어져 있다.각 테스트 케이스의 첫째 줄에는 상근이가 가지고 있는 CD의 수 N, 선영이가 가지고 있는 CD의 수 M이 주어진다.N과 M은 최대 백만이다.다음 줄부터 N개 줄에는 상근이가 가지고 있는 CD의 번호가 오름차순으로 주어진다.다음 M개 줄에는 선영이가 가지고 있는 CD의 번호가 오름차순으로 주어진다.CD의 번호는 십억을 넘지 않는 양의 정수이다. 입력의 마지막 줄에는 0 0이 주어진다.상근이와 선영이가 같은 CD를 여러장 가지고 있는 경우는 없다.출력두 사람이 동시에 가지고 있는 CD의 개수를 출력한다.예제 입력 1 복사3 31231240 0예제 출력 1 복사2 .. 2025. 4. 25.
리트코드 1385 두 개의 정수 배열 arr1과 arr2, 그리고 정수 d가 주어집니다.두 배열 간의 거리 값(distance value)을 반환하세요.거리 값(distance value) 이란, 다음 조건을 만족하는 arr1[i] 원소들의 개수입니다:모든 arr2[j] 원소에 대해 |arr1[i] - arr2[j]| > d 가 성립하는 경우.(즉, arr1[i]가 arr2의 어떤 원소와도 거리 d 이내에 있지 않아야 합니다.)예제 1입력:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2출력:2설명:arr1[0]=4일 때:|4-10|=6 > 2|4-9|=5 > 2|4-1|=3 > 2|4-8|=4 > 2 → 모두 2보다 크므로 조건 만족arr1[1]=5일 때:|5-10|=5 > 2|5-9|=4 > 2.. 2025. 4. 22.
리트코드 349 두 배열의 교집합 두 개의 정수 배열 nums1과 nums2 가 주어지면 해당 배열을nums2 반환합니다.교차로. 결과의 각 요소는 고유 해야 하며, 어떤 순서 로든 결과를 반환할 수 있습니다 . 예시 1: 입력: nums1 = [1,2,2,1], nums2 = [2,2] 출력: [2] 예 2: 입력: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 출력: [9,4] 설명: [4,9]도 허용됩니다. 중복제거 : Set을 활용한다.2개의 교집합 처리는 retainAll을 활용해서 하나로 처리한다.그다음 set을 int array로 변환만 시켜주면 끝나는 문제였다. class Solution { public int[] intersection(int[] nums1, int[] nums2) .. 2025. 4. 22.
백준 25325 학생 인기도 측정 문제학생 이름이 공백으로 구분된 문자열 A가 주어진다.문자열 A에는 중복된 학생 이름이 존재하지 않는다.학생 이름은 알파벳 소문자로 이루어져 있다.각 학생이 좋아하는 학생의 학생 이름 목록이 공백으로 구분된 문자열로 주어진다.각 학생이 좋아하는 학생은 1명 이상 주어지고, 내가 나를 좋아하는 예는 없다.나를 좋아하는 학생이 많을수록 나의 인기도가 높다.인기도가 높은 학생부터 낮은 학생 순으로 학생 이름과 해당 학생을 좋아하는 학생 수를 출력하자.인기도가 같은 경우 학생 이름 기준으로 오름차순으로 출력하자. 호출된 숫자만큼 내림차순으로. 인기도가 같으면 학생이름기준 오름차순. 1. 문자열을 파싱해서 횟수를 추출한다.2. comparator를 커스텀으로 구현해서 인기도 내림차순, 인기도가 같으면 compa.. 2025. 4. 18.
백준 29723 브실이의 입시전략 특정 과목들의 성적의 합으로 서류전형 합격여부를 결정한다.요구하는 과목수와 반영된다고 공개된 과목이 주어질 경우최소 점수와 최대 점수 구하기.과목은 중복되지 않는다. 수강 과목수N 요구 과목수 M 대학에서 공개한 과목수 K 6 3 2calculus 100probability 70physics 50chemistry 80python 90algorithm 100physicspython 요컨데 대학에서 공개한 과목수는 정해진 상태에서M-K 과목수를 N-K 수강과목수 중에서 고르는 경우를 생각하면 될 것 같다. Map을 사용해보면 좋을 것 같다.K로 받은 값들을 Map에서 꺼내서 더해 놓고값들 중 최대 최소를 구하기점수들을 정렬해놓고 M-K개 만큼 앞뒤에서 더해주면 될 것 같다. 풀이 방식 1. spli.. 2025. 4. 17.
백준 1181 단어정렬 알파벳 소문자로 이루어진 N개 단어가 들어올때1. 길이가 짧은 것부터2. 길이가 같으면 사전순. 으로 정렬하는 프로그램 작성.중복단어는 하나만 남기고 제거 제한은 2초, N은 2만까지. 예제 입력 1 복사13butiwonthesitatenomorenomoreitcannotwaitimyours예제 출력 1 복사iimitnobutmorewaitwontyourscannothesitate 1. 중복 제거면 set 생각중.2. 정렬 길이 순으로 정렬하고 같으면 사전순으로 정렬하는 커스텀하게 정렬하는 로직에서 막혔었다. 방법은 Comparator를 따로 구현하고, Arrays.sort를 사용한 방법.그후 중복 제거를 위해서 set으로 바꿔보았다. package 백준.단어정렬1181;import ja.. 2025. 4. 16.