코테 준비 15일차_8/26

Jieun·약 16시간 전

코딩테스트 준비

목록 보기
8/8
  1. 최고의 집합
    s % 2 ==0이면 s / 2값 2개가 결과값이 되고, s%2 == 1 이면 s/2값이랑 s /2값+1이 결과값이 되면 될거같음
  • 초기 정답
class Solution {
    public int[] solution(int n, int s) {
        int[] answer = new int[2];
        if(s % 2 ==0) {
            answer[0] = s/2;
            answer[1] = s/2;
        }
        else if(s == 1) {
            answer[0] = -1;
        }
        else if(s % 2 ==1) {
            answer[0] = s/2;
            answer[1] = (s/2) +1;
        }
       
        return answer;
    }
}
  • AI 풀이
    배열의 크기를 고정해서 answer[0] = -1을 넣었어도, answer[1]은 자바 기본값인 0이 그대로 남아있어서 반환된거임
    n=2인 경우로만 풀이하고 있어서 문제가 발생할 수 있음

해결방안
n > s 이면 [-1]을 담을 배열을 만듬
크기가 n인 배열을 만들고 s/n으로 채우고, 남은 나머지는 뒤쪽 원소부터 1씩 더해주면 됨

  • 최종 정답
class Solution {
    public int[] solution(int n, int s) {
        
        if(n>s) {
            return new int[] {-1};
        }
        int[] answer = new int[n];
        for(int i=0;i<n;i++) {
            answer[i] = s / n;
        }
        for(int i=0;i<s%n;i++) {
            answer[n-1-i]++;
        }
       
        return answer;
    }
}
  1. 리코쳇 로봇
profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글