반응형
코딩테스트 접미사인지 확인하기, 접미사 배열 만들기, 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