• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

k번째 까지만 array 출력

22.05.25 16:03 작성 조회수 141

0

안녕하세요, 선생님. k번째 큰 수를 출력하는 거니까 처음 arr를 내림차순으로 정렬한 뒤에 숫자 3개를 뽑아서 그 개수가 k가 되면 for문을 종료하게 코드를 작성했습니다. (처음에는 모든 for문에 같은 if문과 break를 입력했는데, 구글링해서 중첩반복문을 한번에 종료하는 방법을 적용했습니다.) 혹시 이런식으로 k개만 출력한 경우에 다른 값이 나오는 경우가 있을까요?

 

<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s, list){
let answer=0;
let n = list.length;
let numbers = [] //숫자 3개의 합을 더한 값을 리턴할 배열
list.sort((a,b)=>b-a); //내림차순 정렬
loop1:
for(let i=0; i<n-2; i++){
loop2:
for(let j=i+1; j<n-1; j++){
loop3:
for(let k=j+1; k<n; k++){
let num = list[i]+list[j]+list[k];
if(numbers.indexOf(num)===-1) numbers.push(num); //중복인 숫자는 기록하지 않음
if(numbers.length===s) break loop1;
//s번째 숫자를 구하는 거니까 길이가 s가 되면 더이상 for문이 돌 필요가 없음
}
}
}
numbers.sort((a,b)=>b-a);
console.log(numbers);
answer = numbers[s-1];
return answer;
}
 
let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution(3, arr));
</script>
</body>
</html>

 

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요^^

네. 잘 하신 코드입니다.