728x90

프로그래머스 0단계 8

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(11)

■ 소인수분해 소인수분해를 하는 가장 간단한 방법은 2부터 n까지의 수 중에서 n을 나눌 수 있는 가장 작은 수를 찾는것이다. i = 2부터 반복문을 실행한다. Math.squrt 함수를 사용해서 제곱근을 통해 소인수를 찾는다. n 을 i로 나눴을 때 나머지가 0인 서로 소인수 관계인 숫자를 배열에 넣어주고, n을 i로 나눈 몫을 다시 n에 할당해준다. => 이 과정을 반복해서 i가 n의 소인수가 될때까지 나누어간다. 마지막으로 n 이 1보다 크다면 이 값도 소인수이기때문에 배열에 추가해준다. 이렇게해서 실행을 하면 배열안에 중복되는 숫자가 발생한다. 그래서 filter함수와 indexOf 함수를 통해서 중복되는 숫자를 제외하고 반환해준다. ■ 컨트롤 제트 이 문제의 접근방식은 "Z"를 포함했을때와 포함..

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(9)

■ 배열 회전시키기 주어진 direction, right와 left 두가지의 경우에 대해 나눈다 => if-else if 사용 입출력 예시를 보면 right의 경우엔 numbers[0],numbers[1],numbers[2] => numbers[2],numbers[1],numbers[0]으로 바뀌었고 left의 경우엔 numbers[0],numbers[1],numbers[2].. numbers[6] => numbers[1],numbers[2],numbers[3].. numbers[0] 으로 바뀌었다. right를 보면 앞으로 요소들이 추가 되는것을 알 수 있다. 그래서 pop메서드를 사용해서 요소를 추가해주고, unshift() 메서드를 이용해 앞으로 추가해준다. left를 보면 첫번째 요소들이 제거되고..

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(8)

■ 개미 군단 우선 최소한의 병력을 구성하기 위해선 일개미의 공격력은 도움이 되지 않는다. 그렇기때문에 장군개미와 병정개미의 공격력만으로 최소한의 병력을 구성하기로 한다. 입출력 예시를 보면 23(hp) = 5(장군개미 사냥력)*4 + 3(병정개미 사냥력)*1로 이루어져있다. 위 예시를 통해 장군개미수는 Math.floor함수를 이용해 정수로 구할 수 있다. 그리고 매개변수로 주어진 사냥감의 체력 hp를 5로 나눈 나머지를 장군개미로 처리할 체력으로 계산할 수 있다. 병정개미도 장군개미의 로직을 똑같이 적용하면 된다. 그 후에 반환할때는 일개미로 처리할 체력 hp까지 합산해서 반환하면 된다. ■ 점의 위치 구하기 맨 처음 아래 코드대로 실행한 결과 return 값 2,3에서 제대로 반환하지 못했다. 그래..

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(7)

■ 순서쌍의 개수 answer를 빈배열로 초기화 한다. 입출력 예시를 통해, n의 약수의 갯수가 result와 같다는것을 알 수 있다. 반복문 i를 1부터 n까지 증가시킬때, n이 i의 약수라면 그 값을 answer에 넣는다. answer의 길이를 return해 준다. ■ 가위 바위 보 이 문제의 조건을 정리해보면, result에는 rsp와 길이가 같은 문자열을 return => rsp.length 를 사용 입출력 예시를 통해 rsp="205" 일때, rsp[0] = "2",rsp[1] = "0",rsp[2] = "5" 인데, result에는 result[0] = "0", result[1] = "5",result[2] = "2" 이다. 같은 위치의 인덱스 배열에서 특정 문자열을 바꾸고 있다. mdn으로 ..

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(5)

■ 짝수 홀수 개수 짝수만 담은 배열과 홀수만 담은 배열을 따로 구한 뒤, 하나의 배열에 담아서 반환하기로 했다. num_list의 마지막 리스트값만큼 반복문을 돌려준다. 처음에 map을 이용해서 짝수만, 홀수만 배열로 담았다. 그런데 실행 오류가 발생했고, 다시 mdn을 켜서 사용할 수 있는 함수들을 찾아봤다. 바로 filter함수! map을 사용할 수 없는 이유는 map은 새로운 배열을 반환하기 때문에 결과적으로 배열의 길이가 num_list와 같아진다. 그래서 짝수를 의미하는 num % 2 == 0, 홀수를 의미하는 num % 2 == 1를 하나의 배열에 담아 반환해준다. ■ 문자열 반복 출력하기 이 문제는 대소문자를 구분해서 반복되는 문자열을 return하는 문제이다. 우선 결과값 result를 ..

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(4)

■ 옷가게 할인 받기 구매가격에 따른 할인가가 다르고 그렇기 때문에 지불가격도 다른 문제이다. 매개변수 price가 다르게 적용되기 때문에 함수를 나눠서 식을 작성해야 한다. 지불할 금액에 대한 price와 할인가에 대한 price로 나눌수 있다. 할인가를 알아야 지불가격을 알수 있기때문에 할인가격에 대한 식을 먼저 작성했다. 구매가격에따른 할인가는 주어진 조건을 이용해 if-else문으로 작성할 수 있다. 지불할 금액은 원가인 price에서 할인가격을 빼주고 이 금액을 Math.floor 함수를 이용해 소수점 이하를 버린 정수로 반환해준다. ■ 아이스 아메리카노 가지고 있는 금액에 따른 아메리카노 최대 구매수와 잔돈을 구하는 문제이다. 우선 가지고 있는 금액을 조건으로 걸어주고, 최대 아메리카노 잔수와..

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(3)

■ 피자 나눠 먹기(1) 이 문제를 처음 봤을때, 과거 수학 익힘책에서 본 듯한 느낌을 받았다. 조건은 모든 사람이 한조각씩 먹어야하고, 한판을 7등분을 한다. => 인원(n) /7을 하면 한사람당 최소 한조각을 먹는다. 나눴을때 정수로 떨어져야하고 그래서 Math함수를 써야하는데,floor를 쓸지 ceil를 쓸지 고민하게 된다. 하나의 입출력 예를 들어보면, ceil을 사용해야 1.xx일때, 1이 될 수 있다. ■ 피자 나눠 먹기(2) 먼저 매개변수로 주어진 사람수 n에대해 두가지 경우로 나눌 수 있다. 사람이 한명일때와 n명일때, 한명일때는 무조건 1을 return하고, n명일 경우에 대해 또다시 경우의 수를 나눌 수 있다. 우선 피자 한판을 정의하기 위해, 피자 한 조각을 1로 초기화해준다. 그렇게..

728x90