[TID][Lv 0] 코딩 테스트 연습_3

MoonEn·2022년 12월 17일
0

Today I Learned

목록 보기
4/8

해당 스토리는 코드테스트 공부 중에 새롭게 배운 내용을 기록하고 자기 반성을 위해 기록해 둔다.

가장 큰 수 찾기

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

문제 풀이

for 반복문을 이용해서 각 값들을 비교하여 가장 큰 값과 그 값으 Index를 변수에 담았다. 그리고 그 값을 배열에 담아서 반환한다. 간단하게 설명하면 아래 그림과 같다. 각 순서에 변수에는 더 큰 값을 담는다.

그럼 한 번 코드로 만들어 보자!

나의 코드

먼저 max값과 그 Index 값이 담길 변수를 선언한다.

function solution(array){
	let maxValue = 0;
    let maxIndex = 0;

그리고 각 값들을 반복문으로 비교해보자! maxValue에 넣은 값과 배열의 각 값들을 비교하면 된다. 배열의 값이 maxValue의 값보다 크면, maxValue에 비교한 배열의 값을 할당한다. 그리고 maxIndex에는 할당한 배열의 값의 Index를 할당하면 된다.

for(let i=0 ; i<array.length; i++){
	if(array[i] > maxValue){
    	maxValue = array[i];
        maxIndex = i;
    }
}

마지막으로 maxValue와 maxIndex를 배열에 담아서 반환하면 된다.

return [maxValue, maxIndex];

정리를 하면 다음과 같다.

function solution(array){
	let maxValue = 0;
    let maxIndex = 0;
    for(let i=0 ; i<array.length; i++){
		if(array[i] > maxValue){
    		maxValue = array[i];
        	maxIndex = i;
    	}
	}
	return [maxValue, maxIndex];    
}

간단하게 문제 해결!

추가

다른 사람들이 내가 생각하지도 못한 방법들로 푼 풀이를 보면, 역시 공부가 된다. 이번에는 Spread 구문이다.

Spread구문(...)
배열이나 문자열과 같은 반복 가능한 객체를 요소 목록으로 확장할 수 있는 JavaScript 연산자이다. 함수를 호출할 때 배열이나 문자열을 인수 목록으로 확장하거나 새 배열을 만들 때 배열을 요소 목록으로 확장하는 데 자주 사용된다.

라고 한다. 간단하게 묶여있던 배열이 펼쳐져서 요소들이 필요한 곳에 쓰인다고 할 수 있겠다.

배열의 요소를 복사하면서 확장하기

const arr = [1, 2, 3];
const expanded = [...arr, 4, 5];
console.log(expanded);  // Output: [1, 2, 3, 4, 5] 

함수의 파라미터로 전달하기

function sum(a, b, c) {
  return a + b + c;
}
const arr = [1, 2, 3];
console.log(sum(...arr));  // Output: 6

이번 문제는 함수의 파라미터에 배열의 요소를 전달하여 가장 큰 숫자를 찾아보려 한다.

function solution(array) {
	const maxValue = Math.max(...array); //배열에서 가장 큰 수 찾기
    const maxIndex = array.indexOf(maxValue); //배열에서 가장 큰 수의 Index 찾기
    return [maxValue, maxIndex];
}

반복문 없이 간단하게 해결했다.

마무리

공부할수록 새로운 문법들이 등장한다. 단지 궁금한 것은 위의 2가지 방법 중 어떤 것이 더 좋은 방법인가? 이다. 너무 쉽고 짧은 문제라서 효율성이나 좋은 방법에 대해서 논의하기 어려울 것 같지만, 그래도 좋은 방법이 있을 것이다. 나중에 많은 공부를 한 뒤 여기에 댓글을 달아야겠다. 어떤 방법이 좋은지를 말이다.

profile
개발자를 꿈꾸는 직장인

0개의 댓글