항해 99 알고리즘 풀이 2일차 (1)
1.핸드폰 번호 가리기
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- s는 길이 4 이상, 20이하인 문자열입니다.
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
문제풀이
********
.slice(): begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환
원본 배열은 바뀌지 않는다.
-구문
arr.slice([begin[, end]])
slice(1,4)는 두번째 요소부터 네번째 요소까지 (1, 2 및 3을 인덱스로 하는 요소) 추출
지정하지 않으면->배열의 끝까지
음수를 지정하면->배열의 끝에서부터
ex)slice(2,-1)->3번째 부터(인덱스2부터) 끝에서 두번째까지(인덱스 값 끝에서 0,1)
- 반환값: 추출한 요소를 포함한 새로운 배열
- 예제
let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
let citrus = fruits.slice(1, 3)
// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']
********
다른풀이1
function hide_numbers(s) {
return s.replace(/\d(?=\d{4})/g, "*");
}
//정규표현식으로 뒷 네자리를 제외하고 앞자리를 모두 *로 바꿔준다.
**
replace(찾을문자열, 변경할 문자열)
다른풀이2
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
return result;
}
//*을 s길이-4만큼만 반복해준 값 + s의 뒷 4자리 수
***
repeat(n):문자열을 n만큼 반복
2.행렬의 덧셈
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
arr1 | arr2 | return |
[[1,2],[2,3]] | [[3,4],[5,6]] | [[4,6],[7,9]] |
[[1],[2]] | [[3],[4]] | [[4],[6]] |
문제 풀이
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
입출력 예
x | n | answer |
2 | 5 | [2,4,6,8,10] |
4 | 3 | [4,8,12] |
-4 | 2 | [-4, -8] |
문제풀이
//answer = [x, x+x, x+x+x .....];
x를 x만큼 더한다 = x,2x,3x....
for문 돌리면서 곱해주면 된다.
******
.push(): 배열의 맨 뒤에 요소를 추가. 추가한 요소를 포함한 배열의 길이를 반환