본문 바로가기

코딩 테스트

[Java] Lv.2 연속 부분 수열 합의 개수 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이1 ~ elements개(이하 k개)의 수열을 합산했을 때 나올 수 있는 수의 개수를 출력하는 문제이다.중복 값을 없애기 위해 HashSet을 사용한다.수열의 0번째 자리부터 시작하면서 k개의 수열의 합을 더한다.이후 더한 합을 HashSet에 저장한다.모든 연산이 종료된 뒤에 HashSet의 size를 확인하면 정답이 나온다.로직은 주석으로 확인자바 코드import java.util.*;class Solution { public int solution(int[] elements) { .. 더보기
[Java] Lv.2 택배상자 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이스택(서브 컨테이너)을 활용해야하는 문제이다.1. 메인 컨테이너에서 꺼낼 수 있는 박스가 기사가 원하는 박스(이하 기사 박스)보다 작으면 다른 것을 고려할 필요가 없고 현재 컨테이너의 박스를 서브 컨테이너에 담으면 된다.2. 메인 컨테이너와 기사 박스가 같다면 정답을 +1 하고 다음 박스를 검사한다.3. 12를 제외한 상황은 서브컨테이너를 확인해야하는 상황이다.3-2. 서브 컨테이너에서 꺼낼 수 있는 박스와 기사 박스가 같다면 2와 같이 정답을 +1 처리하고 다음 박스를 검사한다.4. 서브 컨테이.. 더보기
[Java] Lv.2 롤케이크 자르기 문제문제 풀이생각보다 단순했다.그냥 각 인원의 토핑 종류를 저장할 배열을 각각 만들고한 쪽에 일단 전부 몰아준 뒤에 하나씩 다른쪽에 넘겨주면서 토핑 종류를 비교하면 쉽다.자바 코드import java.util.*;class Solution { public int solution(int[] topping) { int answer = 0; // 토핑 종류 int toppingKind = Arrays.stream(topping).max().getAsInt(); // 각 인원이 가진 토핑 개수를 기록할 배열, 1 ~ toppingKind만큼의 수를 위해 toppingKind + 1 // 추가로 마지막에 가진 토핑 종류가 몇개인지 .. 더보기
[Java] Lv.2 우박수열 정적분 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이문제 이해가 너무 어려웠다.(프로그래머스놈들 문제를 너무 이상하게 쓴다...)콜라츠 추측으로 인해 숫자 k가 어떻게 변화하는지를 꺾인선 그래프로 그렸을 때 주어지는 [a, b] 영역에 대해 넓이를 구하라는 문제이다.위의 사진을 기준으로 문제를 풀어보면k가 5부터 시작하여 16, 8 ,4 , 2, 1순으로 n = 6개의 꼭짓점이 발생한 것이 보인다. 이 때 각 꼭짓점을 기준으로 선을 하나 그어보면 사다리꼴의 영역이 보일 것이다. 이때 n - 1 개의 사다리꼴 영역이 생긴 것이 보인다.각 사다리 꼴은.. 더보기
[Java] Lv.2 숫자 카드 나누기 문제문제 풀이두 배열 중 한 배열은 한 값에 나누어떨어지고 한 배열은 안되는 경우 중 가장 큰 수를 뽑는 문제.생각해보면 정답은 한 배열의 가장 작은 수 보다 클 수가 없다. ( 더 크다면 그 값은 가장 작은 수로 무조건 나눌 수가 없다)그래서 확인은 두 배열의 가장 작은 값 두 개를 활용하여 풀면 된다.여기서 그 두 값만 확인한다고 끝이 아니라 각 수의 약수들도 확인을 해주어야한다.가장 작은 두 값은 조건을 만족하지 않는데 해당 두 수의 각 약수 중 하나가 조건을 만족하는 경우 해당 값이 정답이 되기 때문이다. 즉, 1. A배열의 가장 작은 수의 약수가 A배열을 다 나눌 수 있고 B배열을 다 못나누는 경우2. B배열의 가장 작은 수의 약수가 B배열을 다 나눌 수 있고 A배열을 다 못나누는 경우이 두 가.. 더보기
[Java] Lv.2 귤 고르기 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이우선 귤을 크기별로 정렬한다.이후 크기별로 갯수를 카운트하고 다시 갯수별로 정렬을 진행한다.그러면 한 배열에 크기당 갯수 별로 정렬된다.이후 가장 많은 갯수를 가진 귤부터 k개를 꺼낼 때까지 담아주면 종료자바 코드import java.util.Arrays;class Solution { public int solution(int k, int[] tangerine) { int answer = 0; // 귤 크기별 정렬 Arrays.sort(tangerine).. 더보기
[Java] Lv.2 디펜스 게임 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이일단 내림차순으로 저장하는 우선순위 큐를 하나 생성하고 적군 배열 수만큼 for문을 돌려 큐에 각 배열의 적군을 기록하면서 n을 차감한다.이때1.병사가 다죽었는데 무적권이 남아있는 경우,2.병사도 무적권도 없는 경우3.이외의 상황으로 나누어 처리한다. 1는 무적권 수만큼 우선순위 큐에서 적군 수를 뽑고 병사 수 n을  나오는 적군 수만큼 다시 증가 시킨다.이때 무적권이 다 소모됬거나 병사가 0명보다 많아졌을 경우 종료한다.2는 그대로 종료한다.3는 적군을 잘 막은 상황으로 정답 수를 + 1 한다... 더보기
[Java] Lv.2 테이블 해시 함수 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이PriorityQueue를 쓰든 Arrays.sort를 쓰든 Comparator를 이용하여 정렬 기준을 정해주어야한다col번째 데이터를 기준으로 해당 숫자끼리 비교했을 때 같으면 첫 번째 데이터를 기준으로 내림차순 정렬아니면 col번째 데이터를 기준으로 오름차순 정렬이다. (배열은 0부터 시작이므로 당연히 col - 1을 기준으로 비교해야한다.) 이후 각 자리수를 row_begin ~ row_end로 나눈 나머지를 각각 더해서 각 숫자를 ^ 연산해주면 끝.자바 코드import java.util.*.. 더보기