CodingTest 123

[프로그래머스 / Java] Lv.2 카펫

Question https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSolution가로 x 세로 = 전체 격자의 수 이므로, 가능한 가로와 세로의 조합을 찾아야 한다.세로 길이(height)는 3이상부터 시작할 수 있다.가로와 세로의 크기가 3보다 작으면 yellow가 있을 자리가 없다.가로 길이(width)는 전체 격자수를 세로 길이(height)로 나눴을 때 나누어떨어지는 값으로 구할 수 있다.노란색 영역을 구하는 방식은 (세로 - 2) * (가로 - 2)// 테두리(갈색)는 brown// 안쪽(노란색..

[프로그래머스 / Java] Lv.2 귤 고르기

Question https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow귤의 크기별 개수를 짝지어 알아야 하므로 Map을 사용한다.개수가 많은 순서대로 정렬하기 위해 귤 크기별 개수만 모아 List에 저장하고 내림차순 정렬한다.개수가 많은 귤 종류부터 하나씩 선택하면서 개수를 누적해 나간다.누적한 개수가 k 이상이 되는 순간, 선택한 귤 종류 수를 구하고 반복을 종료한다.최소 종류 수(count)를 반환한다.Codeimport java.util.*;class Solution { public int..

[프로그래머스 / Java] Lv.1 예산

Question https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow정해진 예산 내에서 최대한 많은 부서에 지원해주려면, 신청 금액이 작은 부서부터 우선적으로 지원해야 한다.따라서, 배열 d를 오름차순 정렬하여 신청 금액이 작은 순서대로 처리할 수 있도록 준비한다.정렬된 배열을 순차적으로 순회하면서, 예산이 허용하는 한 계속해서 지원하고, 지원할 때마다 예산에서 해당 금액을 차감한다.예산이 부족해지는 순간 반복을 종료하고, 지금까지 지원한 부서의 수를 반환한다.작은 금액부터 예산이 허용하는 범위까지 ..

[프로그래머스 / Java] Lv.2 구명보트

Question https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow최대 2명이 보트에 탈 수 있으므로, 가장 적은 몸무게인 사람 + 가장 많은 몸무게인 사람을 짝지어서 무게 제한과 비교할 수 있다.배열을 오름차순 정렬한다.첫 번째 배열 원소와 가장 마지막 배열 원소를 더한 값을 구한다.무게 제한보다 클 경우무게 제한보다 작을 경우Codeimport java.util.*;class Solution { public int solution(int[] people, int limit) { ..

[프로그래머스 / Java] Lv.1 폰켓몬

Question https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHowTMI) 이제 문제를 보면 어떤 알고리즘을 적용해야되지?(ex. 스택, 큐, DFS 등등...)가 자연스럽게 떠오른다...! 신기하다.고를 수 있는 포켓몬의 최대 수는 → 전체의 절반이다.중복된 포켓몬 번호는 제거해야 하므로 Set을 사용한다.조건문포켓몬 종류 수가 절반보다 적거나 같으면 전부 고를 수 있다.포켓몬 종류 수가 절반보다 많으면 절반 만큼만 골라야 한다.Codeimport java.util.*;class Solution {..

[프로그래머스 / Java] Lv.1 과일 장수

Question https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow가장 비싼 가격을 받으려면 높은 점수끼리 묶어야 하므로, 정렬 후 뒤에서부터 묶음 처리점수 배열을 오름차순 정렬한다.배열 뒤에서 m개 씩 묶어서 처리한다. → (최저 사과 점수) x (한 상자에 담긴 사과 개수)1번을 for문을 통해 반복하면서 answer(최종 수익을 저장할 변수)에 더해주면 상자의 개수는 따로 곱하지 않아도 된다.Codeimport java.util.*;class Solution { public int so..

[프로그래머스 / Java] Lv.2 짝지어 제거하기

Question https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow가장 최근 값과 비교하여 조건에 부합하면 제거하는 로직이므로 후입선출(Last In, First Out)인 스택을 사용하면 될 것 같다.Java 6 이후 Stack 클래스는 성능이 떨어져 사용을 권장하지 않지만, 코딩 테스트에서는 직관성과 편리성(빠른 구현) 때문에 Stack 클래스를 사용한다고 한다.Java 6 이후 Stack 클래스 대신 권장하는 구조 : Deque stack = new ArrayDeque();입력 문자열 s를 문..

[프로그래머스 / Java] Lv.2 소수 찾기

Question https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow이 문제에서의 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수를 의미한다.문자 조합중복 제거 필요 ex. "1" + "1" 일때, 11이 중복 가능소수 판별 로직 구현Codeimport java.util.*;class Solution { // 조합된 숫자의 중복을 피하기 위해 Set으로 구현 HashSet numbersSet = new HashSet(); public int solution(S..

[프로그래머스 / Java] Lv.1 체육복

Question https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow기본값 세팅n명 중 lost.length 만큼 체육복이 없으니, 기본적으로 체육수업 가능한 인원은 n - lost.length정렬체육복을 잃어버린 학생들(lost)과 여벌이 있는 학생들(reverse)을 순서대로 비교하기 위해서 정렬여벌 있는 학생이 도난당했는지 확인어떤 학생이 lost에도 있고 reserve에도 있다면?자신의 여벌을 입으면 되므로 수업 참여 가능 → 체육복을 빌려줘야할 학생에서 제외빌려줄 수 있는 조건 파악남은 lo..

[프로그래머스 / Java] Lv.2 가장 큰 수

Question https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krHow문자열 배열 변환정수 배열 numbers의 각 원소를 문자열로 변환해 String[] number에 저장한다.이유: 숫자를 단순히 크기로 정렬하는 게 아니라, 이어붙였을 때의 결과 문자열을 기준으로 비교해야 하기 때문예시: [3, 30] → "3", "30" → "330" vs "303" 비교 필요정렬 기준 정의 (내림차순)문자열 두 개 a, b를 비교할 때b+a와 a+b를 이어붙인 결과를 비교한다.예: a="3", b="3..