728x90

전체 글 86

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

■ 삼각형의 완성조건(1) 이 문제의 접근방식은 sides의 배열값들을 오름차순으로 정렬한뒤, 가장 작은 큰 수를 제외한 나머지 두 값의 합을 구하고 가장 큰 수와 두수를 비교해서 1 또는 2를 return 해주면 된다. 이 과정에서 정렬을 위해 sort함수와 경우의 수를 위해 if-else 문을 썼다. 다른 사람들의 풀이를 보면 return 부분을 삼항연산자를 이용해 깔끔하게 한줄로 작성할 수 있다. function solution(sides) { sides = sides.sort((a,b) => a-b) return sides[0]+sides[1] > sides[2] ? 1 : 2; } ■ 가까운 수 이 문제의 접근방식은 배열안에 있는 수 중에서 n과 가장 가까운 수를 찾아서 반환해주는것이다. 가장가..

[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)(10)

■ 팩토리얼 팩토리얼 문제는 원리는 이해했지만, 접근방식이 잘 떠오르지 않아 고민을 많이 한 문제이다. i와 factorial 변수를 사용해 반복문을 돌면서 i! 를 계산한다. factorial은 현재까지의 i! 값을 저장하고, i!이 n 이하인 경우에는 i를 1씩 증가시키며 i!값을 계산한다. 반복문 while을 빠져나올때는 i-1을 반환해주기로한다. 그 이유는 i! filter함수를 써주고 remover 변수가 포함 하지 않는 원소들을 filtering해서 반환해주고, join 함수를 사용해서 큰따옴표와 합쳐서 반환해준다. ■ 문자열 정렬하기(1) 이 문제의 접근방식은 위에 문제와 비슷해서 금방 풀릴 것으로 예상했지만 의외의 복병이 있었다. 바로 큰따옴표를 제거하는 방법이었다. 처음에는 replace..

[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)(6)

■ 짝수의 합 answer값을 0으로 초기화한다. i를 1부터 n의 값까지 반복문을 돌린다. 반복문안에서 i가 짝수일때 => i%2==0 그 더한값들(i)을 answer로 반환해줘야한다. answer += i ■ 배열 자르기 이 문제는 입출력 예시를 보면 힌트를 알 수 있다. numbers[1]부터 numbers[3]까지 result로 값을 반환했다. slice함수를 써서 자르기르하면 마지막 index값은 반환하지 않는다. 그래서 num2+1로 식을 바꿔서 반환해준다. ■ 외계행성의 나이 이 문제는 정리하면 숫자인 age값을 문자열로 바꿔서 return해주는 것이다.(string, char관련함수) 먼저 result값을 빈문자열로 초기화해준다. age는 자연수라는 조건이 있기때문에 while문 조건 =>..

[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 함수를 이용해 소수점 이하를 버린 정수로 반환해준다. ■ 아이스 아메리카노 가지고 있는 금액에 따른 아메리카노 최대 구매수와 잔돈을 구하는 문제이다. 우선 가지고 있는 금액을 조건으로 걸어주고, 최대 아메리카노 잔수와..

728x90