알고리즘 연습(음양더하기, 폰켓몬, 예산)

2021. 5. 5. 17:25JAVA

# NOTE

HashSet

- HashSet은 자바 Collection 중 Set의 대표적인 클래스입니다.
- HashSet은 기본적으로 집합으로 중복된 원소를 허용하지 않습니다. 
- 순서 역시 고려가 되지 않습니다
int배열을 Integer 리스트로 형변환하는 방법

List<Integer> numList = (ArrayList<Integer>) Arrays.stream(nums).boxed().collect(Collectors.toList());

# 음양더하기

class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        Integer[] nums = Arrays.stream(numbers).boxed().toArray(Integer[]::new);
       
        //1. 배열 값들을 오름차순으로 정렬
        Arrays.sort(nums, Collections.reverseOrder());        
        for(int i = 0; i < nums.length; i++){
            answer += Integer.toString(nums[i]);
        }
        //3. String으로 붙이기
        return answer;
    }
}

# 폰켓몬

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int count = nums.length/2;
   
        HashSet<Integer> newNums = new HashSet<>();
        
        //1.배열 내 중복 제거 후 HashSet으로 담기
        for(int i = 0; i < nums.length; i++) {
        	newNums.add(nums[i]);
        }
        
        //2.1번 배열의 길이 = 종류 최댓값
        //예외) 최대 선택 가능한 값을 초과할 순 없음
        if(newNums.size() > count) {
        	answer = count;
        }
        else {
        	answer = newNums.size();
        }
        
        return answer;
    }
}
© 2021 GitH

# 예산

class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0;
   
        //예산 내에서 최대 지원가능하게
        //1. 가장 적은 요청순으로 배열을 정렬
        Arrays.sort(d);
        //2. 반복문을 돌리며 예산-요청 진행
        for(int i = 0; i < d.length; i++) {
        	if(d[i] <= budget) {
        		budget = budget - d[i];
        		answer++;
        	}
        	else {
        		break;
        	}
        }
        
        
        return answer;
    }
}