문제 설명
- 전화번호가 문자열
(phone_number)
로 주어졌을 때, 전화번호 뒷 4자리 제외한 나머지 숫자를 전부 *
으로 가린 문자열 반환하기
제한 사항
나의 답안
function solution(phone_number) {
let answer = '',
arr = phone_number.split('');
for(let i = 0; i < arr.length; i++) {
if (i < (arr.length - 4)) answer += '*';
else answer += arr[i];
}
return answer;
}
split('')
을 통해 매개변수로 입력된 phone_number
을 배열arr
로 변환
- 반복문을 통해
arr
을 탐색하며 →
- 마지막 4자리 전에는 i > arr.length - 4
answer
에 *
를 추가
- 마지막 4자리 부터는 i ≤ arr.length - 4
문자열 값 그대로 추가
다른 사람 풀이
function hide_numbers(s) {
return s.replace(/\d(?=\d{4})/g, "*");
}
regex
와 replace()
를 통해 훨씬 간결하게 풀 수 있었던 문제였다
- 참고 : 정규표현식 정리🚀
문제 설명
- Jaden Case란 모든 단어의 첫 문자가 대문자이며, 그 외의 모든 알파벳은 소문자인 문자열을 뜻함
- 단, 단어의 첫 문자가 알파벳이 아닌 경우에는 이어지는 알파벳은 소문자로 써야 함
s
라는 문자열이 입력되었을 때 Jaden Case 문자열을 리턴하는 함수 작성
제한 사항
1
≤ s
≤ 200
s
는 알파벳과 숫자, 공백으로 이루어져 있음
- 숫자는 단어의 첫 문자로만 나옴
- 숫자로만 이루어진 단어는 없음
- 공백문자가 연속해서 나올 수 있음
나의 답안
function solution(s) {
let answer = '';
for(let i = 0; i < s.length; i++) {
if(i === 0 || s[i-1] === ' ') answer += s[i].toUpperCase();
else answer += s[i].toLowerCase();
}
return answer;
}
- 입력된 문자열
s
를 반복문을 통해 탐색하며 →
- 문자열의 첫 문자i === 0
와 바로 직전 값이 공백인 경우 s[i - 1] === ' '
해당 인덱스의 문자를 toUpperCase()
를 통해 대문자로 반환해서 answer
에 추가
- 이외의 경우 다 소문자로 봐도 된다고 가정해서 toLowerCase()
사용 후 answer
에 추가
문제 설명
- 최소공배수(Least Common Multiple)란 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미함
- 마찬가지로
n
개의 수의 최소공배수는 n
개의 수들의 배수 중 공통이 되는 가장 작은 숫자를 의미함
n
개의 숫자를 담은 배열arr
이 입력되었을 때, 이들의 최소공배수를 반환하는 함수 작성
제한 사항
1
≤ arr의 길이
≤ 15
arr
의 원소는 100 이하의 자연수
나의 답안
function solution(arr) {
let max = Math.max(...arr),
count = 0,
x = 0;
while(true){
x += max;
for(let i = 0; i < arr.length; i++) {
if(x % arr[i] !== 0) break;
if(i === arr.length - 1 && x % arr[i] === 0) return x;
}
}
return x;
}
- 최소공배수는 결국 가장 큰 숫자의 배수 중 하나이기 때문에
arr
중 가장 큰 숫자를 max
에 선언
- while-loop이 반복될 때마다
x
에 max
값 더하기 (다음 배수 & Initial max
값이 최소공배수일 수 있음)
- for-loop 돌면서
x
가 arr
값 중 하나의 배수가 아니면 break → if(x % arr[i] !== 0) break;
x
가 arr
의 모든 숫자의 배수이면 현재 x
값 반환 → if(i === arr.length - 1 && arr[i] === 0)