오늘은 문자열 문제를 포함한 몇 문제 풀어보았다.
그 중 문자열 문제들로 글을 작성해보았다.
처음 자바스크립트 배울 때 멘토님께서 실무에서는 문자열을 다룰기회가 많으니 어떤 식으로 활용할지 생각하면서 메소드를 익혀보라고 하셨던게 기억났다.
실제로 프로젝트 하면서 validation이라던가 받아 온 데이터를 정형한다던가 하는 문제로 문자열을 다룰 기회가 많아서인지 어느새 친숙해졌고 이번에 푼 문제가 대부분 문자열을 다루는 문제라 생각보다 어렵지 않았다. 정규식을 쓸까... 하는 부분도 있었지만 정규식 없이 푸는 방향으로 잡으면서 문제를 풀어보았다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수 완성하기
function solution(phone_number) {
const before = phone_number.slice(0,-4)
var answer = '*'.repeat(before.length) + phone_number.slice(-4)
return answer;
}
뒤의 slice(-4)
를 먼저 생각하고 repeat
을 작성하는 바람에 쓸데없는 변수 선언이 있었다.
function solution(phone_number) {
var answer = '*'.repeat(phone_number.length-4) + phone_number.slice(-4)
return answer;
}
문자열 s를 숫자로 변환한 결과를 반환하는 함수
function solution(s) {
var answer = +s;
return answer;
}
프로젝트 할 때 정말 많이 써먹었던 방법이라 모를래야 모를 수가 없었다.function solution(n) {
var answer = '';
const string = '수박'
answer = string.repeat(Math.floor(n/2) + n%2 === 0 ? '수' : '');
return answer;
}
제일 처음에는 하드코딩을 한 부분이 2-3군데 있었는데 수정했다.
사실 지금도 하드코딩이 있고 썩 마음에 드는 풀이는 아니다.
문자가 3글자가 될 수도 있고 제출은 가능 했지만 모든 케이스를 만족하는 방법은 아니라고 생각한다.
const string = new String('수박');
이걸 사용한 방법이 없을까 싶은데 어떤 글자가 와도 상관이 없는 방법을 모색해봐야겠다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수
function solution(arr){
var answer = [];
for(var i = 0; i < arr.length; i++){
if(arr[i] !== arr[i + 1]) answer.push(arr[i]);
}
return answer;
}
그냥 단순하게 for문을 사용해서 다음 요소와 비교하는 방법을 사용했다.
제일 처음 든 생각은 filter를 쓸 수 있지 않을까? 하는 생각이 들었는데 작성을 어떻게하지 고민하다가 떠오르지 않아서 for문을 사용했다.
하지만 역시 어디에나 능력자는 있는 법...
function solution(arr) {
var answer = arr.filter((v, i) => v !== arr[i+1]);
return answer;
}
이 풀이를 보고 놀랬다. 이렇게 간단하게 작성 할 수 있는 거였는데 내가 너무 생각이 많았었다는 걸 알았다.
가끔 이렇게 아이디어가 떠오르다가 말 때 스스로한테 실망하지만 생각의 가지를 쳐내고 아이디어를 완성시키는 연습이 더 필요할 것같다.