코딩테스트

코딩테스트 접미사인지 확인하기, 접미사 배열 만들기, sort() 메서드

김도현2 2023. 5. 11. 23:44
반응형

코딩테스트 접미사인지 확인하기, 접미사 배열 만들기, sort() 메서드

 

 

 

 

 

접미사인지 확인하기

 

이 문제는 my_string 이란 문자열이 주어지면, 문자열의 접두사에서 is_suffix 문자열이 있으면

 

result 에 1을, 없으면 0을 리턴하는 문제입니다.

 

반복문을 사용하여 slice 메서드를 이용하면 쉽게 풀 수 있을거 같습니다!

 

 

let my_string = "banana";
let is_suffix = "ana";
let answer = 0;
    
for(i=0; i<my_string.length; i++){	//my_string의 글자갯수만큼 반복실행
    if(my_string.slice(i) == is_suffix){	
        answer = 1;	//두 문자열이 같은 순간 answer에 1대입
    }
}

//1

슬라이스 메서드를 이용하여 my_string의 문자열의 앞자리부터 하나씩 없애며 is_suffix와 비교할 수 있습니다.

 

 

디버깅을 해보면,

let my_string = "banana"
let is_suffix = "ana"

my_string.slice(0) = "banana";
my_string.slice(1) = "anana";
my_string.slice(2) = "nana";
my_string.slice(3) = "ana";
my_string.slice(4) = "na";
my_string.slice(5) = "a";

my_string.slice(3) 일때 is_suffix와 같으므로 1을 리턴하게 됩니다.

 

 

 

 

 

 

 

접미사 배열

 

이 문제는 my_string 문자열의 접미사들을 사전순으로 정렬하는 문제입니다.

접미사만 뽑아낼 수 있으면 쉬운 문제인거 같습니다!

 

 

다만 배열을 사전순으로 정렬하는 방법을 모르니 알아 보고 가겠습니다.

 

 

sort() 메서드

JavaScript에서 sort()는 배열의 요소를 정렬하는 메서드입니다.

sort() 메서드는 기본적으로 배열의 요소를 문자열로 변환한 후 유니코드 코드 포인트를 기준으로 정렬합니다.

 

sort() 메서드는 원본 배열을 수정하고, 정렬된 배열을 반환합니다.

 

sort() 메서드는 매개변수로 비교 함수를 전달할 수 있습니다. 이 함수를 사용하면 정렬 방법을 사용자 지정할 수 있습니다. 비교 함수는 두 개의 요소를 비교하고, 첫 번째 인수가 두 번째 인수보다 작은 경우 음수, 같은 경우 0, 큰 경우 양수를 반환해야 합니다.

 

const numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];

// 기본적으로 유니코드 코드 포인트를 기준으로 정렬합니다.
numbers.sort();
console.log(numbers); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

// 숫자를 오름차순으로 정렬합니다.
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

// 숫자를 내림차순으로 정렬합니다.
numbers.sort((a, b) => b - a);
console.log(numbers); // [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

 

 

자 오름차순 메서드도 알아냈으니 문제를 풀 수 있습니다!

 

let my_string =	"banana";
const answer = [];

for(i=0; i<my_string.length; i++){	//문자열의 글자 갯수만큼 반복실행
    answer.push(my_string.slice(i))	//문자열 앞자리부터 자르며 배열에 저장(push)
}  
answer = answer.sort();

//["a", "ana", "anana", "banana", "na", "nana"]

깰-끔 하게 문제들을 풀어봤습니다! RRR