코딩테스트

프로그래머스 코딩테스트(n보다 커질 때까지 더하기, 수 조작하기 1, 배열 만들기 1)

SOME코딩 2023. 4. 29. 15:48

<n보다 커질 때까지 더하기>

문제 설명
정수 배열 numbers와 정수 n이 매개변수로 주어집니다. numbers의 원소를 앞에서부터 하나씩 더하다가 그 합이 n보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요.

 

풀이

class Solution {
    public int solution(int[] numbers, int n) {
        int answer = 0;
        for(int i:numbers){
            answer+=i;
            if(answer>n)
                return answer;
        }
        return answer;
    }
}

 

<수 조작하기 1>

문제 설명
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.

"w" : n이 1 커집니다.
"s" : n이 1 작아집니다.
"d" : n이 10 커집니다.
"a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.

 

풀이

class Solution {
    public int solution(int n, String control) {
        for(int i=0;i<control.length();i++){
            switch(control.charAt(i)){
                case 'w':
                    n++;
                    break;
                case 's':
                    n--;
                    break;
                case 'd':
                    n+=10;
                    break;
                case 'a':
                    n-=10;
                    break;
            }
        }
        return n;
    }
}

 

<배열 만들기 1>

문제 설명
정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

 

풀이

class Solution {
    public int[] solution(int n, int k) {
        int num = 0;
        for(int i=1;i<=n;i++){
            if(i%k==0)
                num++;
        }
        int[] answer = new int[num];
        for(int j=0;j<num;j++){
            answer[j] = k*(j+1);
        }
        return answer;
    }
}

 

다른 사람 풀이

class Solution {
    public int[] solution(int n, int k) {
        int count = n / k;


        int[] answer = new int[count];

        for (int i = 1; i <= count; i++) {
            answer[i - 1] = k * i;
        }

        return answer;
    }
}