Web, View/코딩테스트 연습

[JavaScript] 글자 이어 붙여 문자열 만들기 - 181915

kaleb 2023. 12. 12. 14:27
728x90

안녕하세요 미어캣입니다.

 

오늘은 프로그래머스 기초문제 글자 이어 붙여 문자열 만들기 문제를 풀어보도록 하겠습니다.

 

문제를 풀기에 앞서 그동안 제가 항상 제한사항에 대해서 if문을 통해 주었었는데

 

의문이 되어 알아보니 코딩플랫폼에서 제한사항을 주는 이유가 있었습니다.

 

다음과 같은 이유 때문에 문제가 출제자가 권장하는 코드로 풀이되고자 코딩플랫폼에서 

 

입력의 제한사항을 준다고 합니다.!

  • 시간복잡도 : 알고리즘이 해결되는데 걸리는 시간의 상한
  • 공간복잡도 : 알고리즘이 해결되는데 필요한 메모리의 상한

따라서 제가 하는 방식처럼 입력의 제한사항을 줄 필요가 없습니다,!!!! 

 


 

문제설명 : 

문자열 my_string과 정수 배열 index_list가 매개변수로 주어질 때, my_string의 index_list의 원소들에 해당하는 인덱스의

 

글자들을 순서대로 이어붙인 문자열을 return 하는 함수를 작성하시오.

 

제한사항 :

  • 1 <= my_string의 길이 <= 1,000
  • my_string의 원소는 영소문자로 이루어짐
  • 1<= index_list의 길이 M= 1,000
  • 0 <= index_list의 원소 <=my_string의 길이
function solution(my_string, index_list) {
    var answer = '';
    return answer;
}

 

 

함수 표현식으로 변경하여서 문제를 풀어보도록 하겠습니다.

 

정답 : 

더보기

이번 문제도 다양한 방법이 있지만

 

크게 세 가지 방법으로 문제를 풀어보도록 하겠습니다.

 

  • for문을 사용한 방법
const solution = (my_string, index_list) => {
    
	let answer = '';
	for(let i = 0; i<index_list.length; i++) {

    	let idx = index_list[i];
        answer += my_string[idx];
     }
     return answer;
}

 

index의 길이만큼 반복하는 for문을 통해서 my_string에서 index_list의 각각의 원소를 idx에 받아

my_string의 해당 인덱스의 문자를 answer에 하나씩 합치는 방식입니다.

 

  • Array.map을 사용하는 방법
const solution = (my_string, index_list) => {

	let result = index_list.map(i => my_string[i].join('');
    return result;
}

 

Array.map 배열을 변형하고 새로운 배열을 반환하는 메서드인데,

 

Array,map(currentValue, index, array, thisArg)... 와 같은 방식으로 구성되는데 

currentValue외에는 선택사항으로 들어가게됩니다.

 

index_list에서 현재 원소 i를 my_string의 인덱스로 넣고 반환을 하는데 이때 join('')을 통해서 해당 문자들을 붙이는 방식입니다.

 

  • Array.reduce를 사용하는 방법
const solution = (my_string, index_list) => {
	
    let result = index_list.reduce((acc, cur) => {      
            
            return acc + my_string[cur];
        }, '');
        
	return result;
}

 

reduce의 경우는 지속적으로 사용해보고 있는데요,

 

Array.reduce는 배열을 순회하여 각요소를 이전 값과 결합하여 최종 결과를 만듭니다.

acc(accumulator)에  누적된 값이 저장되고

cur(currentValue)에 현재 배열의 요소의 값이 들어가며

''(initialValue) 초기값을 주어 배열의 첫 번째 요소가 초기값으로 되어 반복됩니다.

 

이렇게 한 문제를 다양한 방식으로 풀게되면 필요한 때에 적절한 함수를 사용할 수 있을 것 같습니다.!

 

감사합니다. 파이팅...!

반응형