프로그래머스 Lv0 day10

박상훈·2023년 2월 20일
0

🔎점의 위치 구하기

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차원으로 만들기

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 배열끝에 하나 추가후 반환

profile
다들 좋은 하루 되세요

0개의 댓글