반응형

JS 알고리즘 문제풀이/섹션 4. 완전탐색(블루투포스) 5

5.K번째 큰 수

📌강의 정리 3장을 뽑는 모든 경우는 10C3이 된다. 이 중 K번째로 큰수를 구하는 문제이다. set이라는 자료구조가 있다. 중복을 없애주는 자료구조이다. 이번에는 내림차순으로 정렬해야한다. 먼저 set자료구조를 만들어야 한다. new연산자를 통해 새로운 객체를 만들어준다. 삼중포문으로 모든 경우의 수를 다 구할수 있고 이때 두,세번째포문은 i+1, j+1 이런식으로 중복을 피해준다. 마지막 세번째 포문에서 tmp.add(card[i]+card[j]+card[k]); 해주면 중복을 피하면서 다 더할 수 있다. 또한 i포문의 범위를 n-2로해줘도 좀 더 정확한 표현이 가능하며 그냥 다 b - a); console.log(card); for (let i = 0; i b - a); console.log("f..

4.졸업선물

📌강의 정리 최대한 많은 학생에게 선물을 사줘야 하므로 선물 개수가 중요하다. 상품가격하고 배송비를 더한 값으로 정렬을 한다. 제일 비싼것을 할인 받는다고 반드시 많은 선물을 사는 것은 아니다. 그러므로 모든 경우를 다 봐야한다. 각 상품마다의 50퍼센트 할인을 받아 다 계산해본다. n은 문제에서의 학생수이다. 이제 정렬을 하는데 sort를 써서 ((a,b)⇒(a[0]+a[1])-(b[0]+b[1])); 을 하면 두 값을 더한 값의 오름차순으로 정렬된다. 이제 포문을 써서 i일때 할인을 받는것으로 한다. money 변수는 i값의 상품금액의절반과 배송비용을 총비용에서 뺀값이다. 이제 다시 포문을 돌려 i를 제외한 상품금액과 배송비용을 더한게 money보다 작아야한다. 그래야 뺄수가 있으므로 이제 money..

3.멘토링

📌강의 정리 이 문제가 블루투포스 완전탐색을 쓰는 대표적인 문제이다. 하나하나의 경우를 전부다 확인해야한다. 앞을 멘토 뒤를 멘티로 한다. 총 경우의 수는 4*4로 16가지이다. i가 멘토 j가 멘티라고 가정하고 문제를 푼다. 각각의 테스트마다 하나하나 다 비교해야한다. 또한 포문 두개가 더 돈다 총 4중 포문이다. forfor ij 로 16번 다 돌면서 forfor sk로 하나씩 멘토멘티의 경우를 다 비교해본다. 그렇게 비교하며 예를들어 (3,1)이 맞는 멘토멘티인지 확인하려면 test[k][s] === i test[k][s] === j 를 하며 하나의 멘토 멘티 짝이 모든시험에서 다 통과하는지를 확인한다. 입력 배열을 test로 받고 m테스트갯수를 test.length로 3을 구한다. 학생수n은 te..

2.뒤집은 소수

📌강의 정리 toString을 해도 되지만 숫자자체를 몫과 나머지로 뒤집어보자. n은 받지말고 arr만 받자. 앤서배열에 답만 푸쉬해서 리턴하자. x of arr를 써보자 포문 안에 result의미에 res변수를 하나 선언한다. while(x)를 하여 원본을 바꿔도 상관없다. 이제 이 안에 let t=x%10; res=res*10+t; x=parseInt(x/10); 을 하면 숫자만으로 자리가 서로 바뀐다. 그리고 isPrime()이라는 함수를 새로 만들어 소수를 구분하는 함수를 만들어야한다. isPrime은 1에서 false를 반환하고 포문을 돌리되 받은수의 절반만큼만 돌리면 된다. 또한 소수를 구하는 포문을 돌릴때 제곱근까지만 돌려도 된다. 그 원리를 생각해 예로들면 16일 경우 4*4이므로 제곱근 ..

1.자리수의 합

📌강의 정리 자리수의 합들을 각각 더해서 최대값을 출력하는 문제이다. 매개변수넘기기는 n을 넘겨도 배열의 길이를 넘겨도 괜찮다. max변수는 가장 작은값이어야 하므로 Number.MIN_SAFE_INTEGER; 로 한다. 우선 숫자 자체가지고 문제를 해결한다면 sum 변수와 tmp변수를 만들어 x값을 넣어준다. 이제 tmp를 %10하고 /10하면 자리수를 더하고 자리수를 숫자에서 삭제하는 코드가 작성된다. 이때 while문을 사용한다. while(tmp)를 하면 된다. /10을 할때는 앞에 Math.floor를 해서 소수점을 없애준다. 이후 if문으로 sum과 max를 비교하여 sum이크면 max에 sum을 대입하여 max에 계속 큰값이 들어오게 하고 answer에는 tmp의 원본값인 x를 넣어준다. i..

반응형