function solution(dot) { var answer = 0; let x = dot[0]; let y = dot[1]; if(x > 0 && y > 0) return 1 if(x < 0 && y > 0) return 2 if(x < 0 && y < 0) return 3 if(x > 0 && y < 0) return 4 return answer; } // 사분면 따라 결과값 출력
지금은 변수 가 두개라 두줄로 정의됬지만 ,
만약베 변수가 두개 이상일경우
구조 분해 할당 을 사용할것을 추천합니다.const [x , y] = [5 , 10] const [i , j] = dot
2차원 배열이라고 복잡하게 생각하지말고 차례대로 보면 된다.
인자가 되는게 배열 이라는것을 생각하고 접근해보자.
인자로 담을 '뉴배열'을 만들어준다음
'뉴배열'안에 들어갈 숫자들을 새롭게 변수를 선언하고 할당한다.
그다음 '뉴배열'의 크기가 K 와 같다면 그것을 이차원 배열의 인자로 담아주고 '뉴배열'을 초기화 시키고 반복한다
반복문으로 순서가 건너뛰고 딴 사람이 받으니 i += 2;로 할당합니다.
이후 i %= numbers.length 는 i가 너무 커지니 다시 처음으로
돌아가게 해주는 코드입니다.
cnt 는 던진 횟수이므로 1로 시작하고 숫자를 늘려주며
cnt === k 일때 리턴값을 출력합니다.실패한 풀이
처음으로 돌아가야할때를 if 문으로 작성해주었는데
i를 횟수 , order 를 차례로 설정하였다.
그러나 마지막 해당되는 조건에서 초기로 돌아가야하는데 그게 마지막 경우일때 그냥 +2 가 되버리며 리턴이 되는 문제가 발생하였다..
좀더 공부하고 다시풀어보자
두번의 조건문으로 풀기
function solution(numbers, direction) { let arr = [] if(direction === 'right'){ arr.push(numbers[numbers.length - 1]); for(let i = 0; i < numbers.length - 1; i++) { arr.push(numbers[i]); } } else { for(let i = 1; i < numbers.length; i++){ arr.push(numbers[i]); } arr.push(numbers[0]) } return arr; }
왼쪽으로 이동할때
오른쪽으로 이동할때 조건을 설정하여
오른쪽일경우 마지막 numbers[numbers.length - 1] 을 처음으로 바꿔준다
왼쪽으로 이동할경우 numbers[0]을 처음으로 푸시한다.두번째 js함수로 풀기
pop 배열 맨마지막 제거 반환 , unshift 배열 맨앞에 추가후 반환
shift 배열에 첫번째 요소를 제거후 반환 , push 배열끝에 하나 추가후 반환