이제 학습의 시작을 알고리즘으로 하는것에 익숙해졌다.
학습이 건강해지고 있다는것....
1. 핸드폰 번호 가리기
그다지 어렵지 않은 문제이다. (엄청 헤맸음)
반복문을 이용해서 문자열 phone_number를 순회하여 length -4 까지는 * 로, 그외는 그대로 출력해주면 된다
function solution(phone_number) {
var answer = '';
for(var i = 0; i < phone_number.length; i++ ) {
answer = i < phone_number.length - 4 ? answer + '*' : answer + phone_number[i] ;
}
return answer;
}
2. 없는 숫자 더하기
function solution(numbers) {
var answer = 0;
for( var i = 0; i < numbers.length; i ++) {
answer += numbers[i]
}
return 45 - answer;
}
배열의 모든 숫자를 더하고 0~9 의 합인 45에서 빼는 코드를 만들었다.
아무래도 (야매)
정답으로 인정받기엔 어려운 답지라고 생각한다.
.includes() 함수 를 데려오도록 하자
이걸 이용하면 훨씬 그럴싸 한 코드를 만들 수 있다.
function solution(numbers) {
var answer = 0;
for ( var i = 1; i < 10; i ++) {
if(!numbers.includes(i)) { answer +=i}
}
return answer;
}
1~9 까지의 숫자를 number가 포함되어 있는지를 체크한 뒤 없는경우 ( ! ) 만 answer 에 더해준다.
3. 제일 작은 수 제거하기
우선 아는것만 가지고 풀어보자..
function solution(arr) {
var answer = [];
for( var i = 0; i < arr.length ; i++) {
if(arr[i] != Math.min(...arr) ) { answer.push(arr[i])}
}
return answer < 1 ? [-1] : answer;
}
arr을 순회하여 arr의 최소값이 아닌경우 answer 에 push 한다.
그리고 answer 값이 없는경우 [-1] 을 리턴하고 아닌경우 answer 를 그대로 리턴...
통과는 되는데, 테스트1의 지연시간이 심상치가 않다.
아마도, arr.length 가 엄청나게 큰 경우인 듯 하다.
검색 해본결과, index값을 찾기 위한 for 노가다를 할 필요가 없이
indexOf() 함수를 사용하면 된다
이 문제는 사실상 Math.min() 과 indexOf() 를 위한 문제였던것
function solution(arr) {
if(arr.length == 1) { return [-1]}
arr.splice(arr.indexOf(Math.min(...arr)), 1)
return arr;
}
우선 [-1] 이 리턴될 경우는 arr.length 가 1인 경우 뿐이므로 미리 리턴해버린다
그 후 arr 배열에서 가장 작은 수의 index 값을 splice 로 날려주면 끝이다 !
'사전캠프' 카테고리의 다른 글
26일차 - 알고리즘 풀이 (0) | 2024.07.25 |
---|---|
25일차 - 알고리즘 풀이 (3) | 2024.07.24 |
23일차 - 알고리즘 풀이 (3) | 2024.07.22 |
22일차 - 알고리즘 풀이 (0) | 2024.07.19 |
21일차 - Javascript 입문 수업 (0) | 2024.07.18 |