[JAVA/프로그래머스] 공 던지기 DAY 10

윤소영·2023년 2월 21일
0

JAVA

목록 보기
3/41

문제

기록용 풀이 연습장

답안 코드

class Solution {
    public int solution(int[] numbers, int k) {
        int answer = 0;
        int[] arr = new int[k*2];
        int[] arr1 = new int[k*2];
        for(int i = 0; i < k*2; i++){
            arr[i] = i + 1;
            arr1[i] = arr[i]%numbers.length;
            if(arr1[i] == 0)
                arr1[i] = numbers.length;
        }
        int[] ans = new int[k];
        for(int i = 0; i < k; i++){
            ans[i] = arr1[i*2];
        }
        return answer = ans[k-1];
    }
}

코드 풀이

처음에는

if(k*2 > numbers.length){
        int[] arr = new int[k*(1+(numbers.length/k))];
            for(int i = 0; i < 1+(numbers.length/k); i++){
                for(int j = 0; j < k; j++){
                    arr[count++] = numbers[j];
                }
            }
        }
        int cnt = 0;
        else{
            int[] arr = new int[numbers.length];
            for(int i = 0; i < numbers.length; i++){
                arr[cnt++] = numbers[i];
            }
        }

numbers 배열을 반복해줘야겠다는 생각으로 이런 풀이를 하다가 단단히 잘못되고 있다는걸 깨닫고 그냥 숫자를 나열해서 나머지를 나오게 한 다음 그걸 배열해야겠다는 생각을 했다.
숫자을 나열하고 numbers.length으로 나누려하니 나머지가 0이 나오는 원소가 생기고 그거 때문에 case 20, 22에서 오류가 났었다.
깨닫고 나서는 나머지가 0이 나오는 항목에선 그냥 numbers.length를 넣어줬고 그랬더니 해결됐다.

다른 분들의 문제풀이를 보니 완전 간단하게 풀이되는 문제였지만,,, 나도 저렇게 할 수 있을 때까지 노력해야겠다는 생각을 했다.

0개의 댓글