일단 언제 푼 문제 중에 03번 수박수박수 문제의 다른 풀이를 보았는데, 너무 인상깊어서 코드를 남겨 놓는다.
일단 어제 내가 푼 코드는
function solution(n) {
if (n%2 === 0) {
return `수박`.repeat(n/2);
} else {
return `수박`.repeat(n/2) + `수`.repeat(n%2);
};
};
// 반복 부분을 개선한 코드
function solution(n){
return ("수박").repeat(n/2) + ((n%2) ? '수' : '');
}
.repeat 메서드를 이용해서 코드를 짠건데
일단 개선전의 코드에서 우와 하고 눈이 커진거 같다.
홀수번째일때와 짝수번째일때 나는 for문을 줘서 홀짝을 수박으로
담았는데, 같은 개념인데 메서드를 사용해서 저렇게 간결하게 코드를 짜내는게 너무 신기했다. 사실 반복을 개선한 코드를
내가 당장에는 적긴 힘들거같은데 위에 코드는 내가 기억해뒀다가 꼭 나중에 다시 풀어보고싶다.
그리고 오늘 푼 코딩테스트 문제
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
입출력 예
numbers result
[1,2,3,4,6,7,8,0] 14
[5,8,4,0,6,7,9] 6
이런 문제 였는데, 내가 푼 코드는
function solution(numbers) {
let answer = 0;
for (let i = 1; i < 10; i++) {
if(!numbers.includes(i)) {
answer += i
}
}
return answer;
}
이거였다. 일단 기본으로 var 선언되어있는걸 건들면 안되는 줄 알았는데, 바꿔도 된다고 하셔서
바로 let으로 선언해주고 결과값을 저장할 변수를 선언했다.
for문을 이용해서 일단 0보다 크고 9까지의 숫자니까 10보다 작게 주었다.
그리고 없는 번호니까 부정 !numbers
에다가 오늘 배운 includes 메서드
를 사용해서 포함 되어있지않은 숫자를 조건식으로 넣고 answer에 i를 더해주라고 마무리했다.
이 반복이 끝나면 배열에 없는 숫자가 저장된다.
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
"01033334444" "***4444"
"027778888" "*8888"
function solution(phone_number) {
let len = phone_number.length;
let answer = '*'.repeat(len-4) + phone_number.slice(-4);
return answer;
}
이것도 아까 수박수박수 문제에서 배운걸 응용했다. repeat메서드
를 알았고 그걸 써먹고 싶었다
딱 보자마자 어 쓸수있겠는데..? 싶어서 신났다 (ㅋㅋㅋㅋㅋㅋㅋ)
일단은 length는 변수를 len
으로 주는게 좋다고 하셨던게 기억나서 변수 이름을 len으로 했고,
전화번호 길이를 선언했다. 그러고나서 "*" 를 반복할건데 len의 문자열 길이에서 4를 뺀만큼 반복시켰다.
그러고나서 내가 제일 머리아파했던 slice를 이용해서 문자열을 끝에서 네글자 빼온걸 더해줬다.
사실 두문제를 더 풀어야하는데 그건 내일의 내가 하겠지...?