문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
풀이 과정 : 힌트를 참고했다.
인덱스를 뽑아와서 각 배열에 있는 글자에 첫 글자에 추가해주고.
그걸 sort로 정렬시킨 다음.
그 글자를 제거하는 방식을 사용하였다.
functionsolution(strings, n) {
varanswer= [];
letprocess= [];
for (i=0; i<strings.length; i++) {
letstr1=strings[i].slice(n, n+1);
letnew_array=str1.concat(strings[i]);
process.push(new_array);
}
process.sort();
for (i=0; i<process.length; i++) {
letstr2=process[i].slice(1, process[i].length);
answer.push(str2)
}
returnanswer
}
배운 것 / 복습할 것
sort = 사전순으로 정렬해줌
slice 문자열에서도 사용 쌉가능.
sort를 for문 안에서 계속 돌리면 오류남... 바깥으로 빼줘야함.
데이터 타입 심화.
데이터 타입에는 기본형과 참조형이 있다.
기본형 : number, string, Boolean null, undefined, Symbol
알고리즘 문제를 풀 때, 웬만하면 const로 선언하고 let은 바뀌는 변수에만 할당하자.
변수 이름.. 신경 쓰자.
간단한 if 문은 삼항 연산자로 만들어낼 수 있는 듯 하다!
알고리즘 숙제 1.
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열numbers가 매개변수로 주어집니다.numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
constarray= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
letanswer=0;
functionsolution(numbers) {
constnewarray=array.filter(function (item) {
return!numbers.includes(item);
});
newarray.forEach((element) => {
answer+=element
});
returnanswer
}
으으 includes에 대한 공부가 부족했다.
includes에 대한 공부가 더 필요할 듯 하다.
알고리즘 숙제 2
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부*으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
functionsolution(phone_number) {
letanswer;
constlastfour=phone_number.length-4
constnonlastfour=phone_number.slice(0, lastfour)
conststar='*'.repeat(nonlastfour.length)
answer=phone_number.replace(nonlastfour, star)
returnanswer
}
이번에 새로 배운 repeat를 써봤다!
문법을 익혀두도록 하자.
알고리즘 숙제 3
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요
functionsolution(arr, divisor) {
letanswer= [];
arr.forEach((element) => {
if (element%divisor===0) {
answer.push(element);
}
});
answer=answer.sort((a, b) =>a-b);
if (answer.length===0) {
answer.push(-1);
}
returnanswer;
}
마지막 -1을 반환하는 거에서 조금 헤맸는데, 힌트 도움을 받아 배열 안에 아무것도 없으면 -1을 push하도록 로직을 했더니 금방 풀렸다.
알고리즘 숙제 4
최소 직사각형을 구하는 문제 ( 문제가 너무 길어...)
functionsolution(sizes) {
letanswer=0;
letwidth_array;
letheight_array;
sizes.forEach((e) => {
e.sort((a, b) =>a-b);
});
width_array=sizes.map(function (item) {
returnitem[0];
});
height_array=sizes.map(function (item) {
returnitem[1];
});
constwidth=Math.max(...width_array);
constheight=Math.max(...height_array);
answer=width*height;
returnanswer;
}
마지막에 현지님의 도움을 받아... Math.max를 전수받았다... 배열 안에서 최댓값을 구하는 메서드. 기억해두자.