문제 문제 풀이 배열에 담긴 사과의 등급을 오름차순 정렬을 하여 m 번째 만큼 구분한다. 구분된 박스마다 가장 작은 값 즉 배열의 마지막값을 가지고 계산을 수행. 나의 답안 public static int solution(int k, int m, int[] score) { int answer = 0; List asList = new ArrayList(); for (int a : score) { asList.add(a); } Collections.sort(asList, Collections.reverseOrder()); int multiple = 1; for (int i = m-1; i < asList.size(); i += m) { multiple = asList.get(i) * m; answer += ..
문제 문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다. 출력 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다. 문제 풀이 Hashtable을 이용하여 각 종류의 숫자를 입력을 해두고 그와 같은 값이 나왔을 때 꺼내서 카운팅하고 다시 입력하는 방식으로 접근 하였다. 나의 답안 import java.io.IOException; import java.util.*; public class Main { publi..
문제 문제 상근이는 초등학교 졸업 여행으로 외계 행성 X3에 방문했었다. 이 행성에 사는 사람들의 이름은 모두 자연수이다. 행성의 거주민은 모두 서로를 알고 있다. 두 X3인은 그들의 친밀도를 자신의 이름을 이진수로 바꾸어서 계산한다. 두 이름을 이진수로 바꾸고, 자리수가 짧은 쪽을 기준으로 정렬한다. 이때, 두 이진수의 각 자리 아래에 두 자리가 같으면 0을, 다르면 1을 적는다. 이 결과 이진수를 다시 10진수로 바꾸면 그들의 친밀도가 된다.예를 들어, 10과 19의 친밀도는 25이다.1 0 0 1 1 = 19 0 1 0 1 0 = 10 -------------- 1 1 0 0 1 = 25 행성의 가치는 이 섬에 있는 모든 친밀도의 합이다. 행성 거주민들의 이름이 주어졌을 때, 행성의 가치를 구하는 ..
문제 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 ..
문제 문제 풀이 각 스테이지에 머물고 있는 유저의 수를 카운팅을하고 해당 카운팅 된 값 / 해당 스테이지를 지나간 유저의 총 수로 값을 구한 뒤 그 값을 배열과 리스트에 담아둔다. 리스트에 담아 둔 값을 배열값과 비교하여 같은 값을 가진 배열의 인덱스를 결과 배열에 반환 하는 방식으로 접근. 나의 답안 public static int[] solution(int N, int[] stages) { int[] answer = new int[N]; double[] stage = new double[N + 1]; for (int i : stages) { if (i == N + 1) continue; stage[i]++; } int users = stages.length; ArrayList failRate = ne..
문제 문제 풀이 3중 for문으로 각 배열요소를 한번 씩 더하는 식을 만들고 i, j ,k 을 더한 후, 2 ~ num /2 까지 나누었을 때 나머지가 없으면 소수인 것으로 인지하고 카운팅하는 방식으로 접근. 나의 답안 public static int solution(int[] nums) { int answer = 0; for (int i = 0; i < nums.length - 2; i++) { for (int j = i + 1; j < nums.length - 1; j++) { for (int k = j + 1; k < nums.length; k++) { int num = nums[i] + nums[j] + nums[k]; boolean flag = true; for (int l = 2; l < nu..