코딩테스트/JS 알고리즘 문제(JS)
K번째 큰 수
판다꼬마
2023. 1. 9. 19:33
728x90
문제
입력
- 첫 줄에 자연수 N과 K 입력되고, 그 다음 줄에 N개의 카드값이 입력된다.
출력
첫 줄에 K번째 수를 출력합니다. K번째 수는 반드시 존재합니다.
입력 예시
10 3
13 15 34 23 45 65 33 11 26 42
출력 예시
143
풀이 방법
for문을 3번 중복해 풀이하였다.
내 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
const sol =(n,k,s)=>{
let answer=0;
let tmp=new Set();
for (let i=0; i<n; i++){
for(let j=i+1; j<n; j++){
for(let x=j+1; x<n; x++){
tmp.add(s[i]+s[j]+s[x]);
}
}
}
let a=Array.from(tmp).sort((a,b)=>b-a);
answer=a[k-1];
return answer;
}
let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(sol(10, 3, arr));
</script>
</body>
</html>
Solution
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(n, k, card){
let answer;
let tmp = new Set();
for(let i=0; i<n; i++){
for(let j=i+1; j<n; j++){
for(let k=j+1; k<n; k++){
tmp.add(card[i]+card[j]+card[k]);
}
}
}
let a=Array.from(tmp).sort((a, b)=>b-a);
answer=a[k-1];
return answer;
}
let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution(10, 3, arr));
</script>
</body>
</html>
느낌점
쉽지 않다.
오름차순 정렬
let numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
return a - b;
});
console.log(numbers); // [1,2,3,10,20,30]
내림차순 정렬
let numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
return b - a;
});
console.log(numbers); // [1,2,3,10,20,30]
New Set()
자바스크립트에서의 Set은 중복이 허용되지 않는 객체이다. 안에 이미 같은 값이 존재한다면 추가되지 않는다.
=> 중복값을 허용하지 않아야하면 Set을 이용한다.
728x90