코딩테스트
-
[프로그래머스] 음양 더하기 자바코딩테스트 2025. 4. 4. 16:22
https://school.programmers.co.kr/learn/courses/30/lessons/76501 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제absolutes 는 각 수의 절대값 모음이며 signs 는 true:false 로 구분된 집합이다.absolutes.length == signs.length 이며각 수들의 실제 정수의 합을 구하시오. 접근absolutes와 signs의 길이가 같으므로 for문 처리하였고signs[i] ? 1 : -1 로 양수와 음수를 구분지었다.그 후 answer += sign * absolutes[i] 로 계산하였다. public int solution(..
-
[프로그래머스] 로또의 최고 순위와 최저 순위 자바 Map과 Math.max코딩테스트 2025. 4. 4. 16:15
https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제로또 당첨번호와 내 로또 번호가 있다. 내 로또번호는 동생에 의해 n개가 훼손되어 알아볼 수 없는 숫자가 존재할 수 있는 상황이다. (0 이 때, 내가 기대할 수 있는 최고 등수와 최저 등수를 배열에 담아 반환하시오.(6개 : 1등, 5개 : 2등 4개: 3등 3개: 4등 2개: 5등 1개 이하 : 6등) 제한사항-lottos는 길이 6인 정수 배열입니다.-lottos의 모든 원소는 0 이상 45 이하인 정수입니다. -0은 알아볼 수 없는 ..
-
[프로그래머스] 약수의 개수와 덧셈 제곱근방식코딩테스트 2025. 4. 4. 15:41
문제주어진 정수 left ~ right까지의 모든 수들의 약수의 갯수를 구하고, 약수의 갯수가 짝수면 answer 에 더하고 홀수면 answer에서 뺀 최종 결과값을 구하시오.접근제곱근 방식을 사용해 반복 횟수를 최소화하여 작업하도록 작성함.우선 각 숫자별 약수의 갯수를 구한 후, 갯수에 따라 answer에서 증감시킨다.public static int solution(int left, int right) { List factors = new ArrayList(); List numbers = new ArrayList(); int answer = 0; //각 숫자별 약수의 갯수 구하기 제곱근 방식 for(int i = left; i
-
[프로그래머스] 숫자 문자열과 영단어 자바 문자비교코딩테스트 2025. 4. 4. 13:19
문제주어진 문자열 s는 숫자 혹은 숫자 + 영단어로 이루어져있다.해당 문자열을 해석하여 의미하는 숫자를 반환하시오.접근단어를 숫자와 매칭시킬 배열 numbers를 생성해 각 항목에 인덱스의 영어단어를 담고s를 반복문 처리하여 글자를 비교한다.해당 글자가 숫자면 num에 바로 추가하고 알파벳이면 spell에 저장하고 다음 값으로 넘긴다.만약 spell이 numbers에 존재하는 값이면 해당 인덱스를 num 에 추가하고 spell을 초기화한다. 이 과정을 마친 결과값을 Integer로 변환하여 반환한다.public int solution(String s) { StringBuilder num = new StringBuilder(); String spell = ""; Str..
-
[프로그래머스] 부족한 금액 계산하기 자바 등차수열의 합코딩테스트 2025. 4. 4. 12:37
문제기본금액이 price, 총 이용 횟수가 count, 보유 금액이 money로 주어진다.사용요금은 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.이 원칙에 근거하여 총 사용료 - 보유금액한 결과를 구하시오. 단 보유금액 > 총 사용료일 경우 0을 반환한다.접근사용요금이 회차당 price씩 커지는 등차수열의 형태를 띄고 있으므로 등차수열의 합 공식을 활용하였다. public long solution(int price, int money, int count) { long answer = -1; long total = price * ((long) count * (count ..
-
[프로그래머스] 없는 숫자 더하기 자바 sort코딩테스트 2025. 4. 4. 12:16
문제0 ~ 9 까지 정수이 들어갈 수 있는 집합 numbers에 없는 정수들의 합을 구하시오.접근먼저 numbers 를 오름차순 정렬한 후0~9까지 넣을 새로운 배열 newNums를 하나 만들고numbers를 반복문처리하여 newNums[idx] = idx;로 담는다.이러면 0인 값이 없는 값이므로 다시 newNums를 반복문처리하여 값이 0인 인덱스들을 더하여 처리하였다.public int solution(int[] numbers) { int answer = 0; Arrays.sort(numbers); int[] newNums = new int[10]; for (int idx : numbers) { newNums[idx] = idx;..
-
[프로그래머스] 최소 직사각형 자바 Math.max Math.min코딩테스트 2025. 4. 3. 15:05
문제주어진 명함 가로 세로의 크기의 집합 sizes 중 모든 명함을 넣을 수 있는 최소 직사각형 w * h 를 구하시오.제한사항명함은 90도 회전이 가능하다.sizes의 원소는 [w, h] 형식입니다. // w는 명함의 가로 길이, h는 명함의 세로 길이w와 h는 1 이상 1,000 이하인 자연수입니다.접근sizes를 순회하여 maxW 와 maxH를 구하되, 회전을 염두하여 크기를 갱신한다.w를 w h 중 큰 쪽, h 를 w h 중 작은 쪽으로 한 후 최대값과 비교하여 갱신하는 방식이다. public int solution(int[][] sizes) { int maxW = 0; int maxH = 0; //먼저 w h 최대값 구하기 for (int[] c..
-
[프로그래머스] 나머지가 1이 되는 수 찾기 자바 제곱근 활용코딩테스트 2025. 4. 3. 12:58
문제주어진 n 을 나누어 나머지가 1이되게 하는 x 중 최소값을 구하라.제한사항3 ≤ n ≤ 1,000,000접근n이 100만까지 허용되므로, i = 2부터 n -1까지 단순작업을 하기엔 비효율적이라고 판단했다.그러던 중 일전에 약수 목록을 구하는 문제 중 접했던 제곱근 방식에 착안하여 코딩하였다.public static int solution(int n) { int answer = 0; //제곱근 방식으로 체크 for (int i = 1; i 제곱근 방식 (이전 예제)List divisors = new ArrayList();for (int i = 1; i