코딩 테스트 대비 8일차(programmers)
1.2차원으로 만들기
2.공 던지기
코드
function solution(numbers, k) {
var answer = 0;
var sum = [];
var odd = [];
var even = [];
var half = (numbers.length/2);
for(let i=0; i<numbers.length; i++){
if(i%2 == 1){
even.push(numbers[i]);
}
else if(i%2 == 0){
odd.push(numbers[i]);
}
}
if(numbers.length%2 == 0){
if(k>odd.length){
let rest = (k%odd.length)-1;
if(rest == -1){
answer = odd[0];
}
else{
answer = odd[rest];
}
}
else{
for(let j=0; j<k; j++){
answer = odd[j];
}
}
}
else if(numbers.length%2 == 1){
sum = [
...odd,
...even,
];
for(let n=0; n<k; n++){
let m = n%numbers.length;
answer = sum[m];
}
}
return answer;
}
나의 풀이 numbers.length가 짝수 홀수 일 때를 나눠서 문제를 풀었다.
성공은 했지만 너무 불필요한 조건이 많고 길어서 다른 사람들이 풀이를 보고 다시 정리해서 풀어보자
다른 사람의 풀이
function solution(numbers, k) {
let Index = 0;
for(let i = 0; i < k; i++){
Index += 2;
if(Index > numbers.length){
Index -= numbers.length;
}
}
return numbers[Index - 2];
}
index라는 다음에 공을 받은 사람을 += 2로 증가시켜 구현하였고
if 조건문으로 index값이 numbers.length의 값을 증가 하면 undefined가 뜨기 떄문에
처음 값 즉 numbers[0]으로 돌아가기 위해 index = index - numbers.length를 해주어 돌아가고
최종 결과값은 다음 공을 받을 사람의 값이기 떄문에 index -2 를 해주어 공을 던지는 사람의 값을
return해주었다.
3.배열 회전시키기
4.주사위의 개수
5.합성수 찾기
6.최대값 만들기
7.팩토리얼
8.모음 제거