프로그래머스 코딩테스트(n보다 커질 때까지 더하기, 수 조작하기 1, 배열 만들기 1)
<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;
}
}