-
항해 99 알고리즘 풀이 2일차 (1)알고리즘 풀이 2021. 11. 12. 21:31
1.핸드폰 번호 가리기
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
제한 조건
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.- s는 길이 4 이상, 20이하인 문자열입니다.
phone_number return "01033334444" "*******4444" "027778888" "*****8888" 문제풀이
function solution(phone_number) {var answer = '';for(let i = 0; i<phone_number.length-4; i++){ //phone_number길이-4만큼만 돌면서 *answer+='*'}return answer+phone_number.slice(-4); //*값이 들어있는 answer+.slice(-4)(뒤에서 부터 네번째까지 추출)}********
.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]] 문제 풀이
function solution(arr1, arr2) {var answer = [];for(let i=0; i<arr1.length; i++){let temp = [];for(let j=0; j<arr1[i].length; j++){temp.push(arr1[i][j] + arr2[i][j])} answer.push(temp)} return answer;}3.x만큼 간격이 있는 n개의 숫자문제 설명함수 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문 돌리면서 곱해주면 된다.
function solution(x, n) {var answer = [];for (let i = 1; i<=n; i++){answer.push(x*i); //for문 돌리면서 나온 값을 answer에 push해준다.}return answer;}******
.push(): 배열의 맨 뒤에 요소를 추가. 추가한 요소를 포함한 배열의 길이를 반환
'알고리즘 풀이' 카테고리의 다른 글
항해99 알고리즘 풀이 3일차(1) (0) 2021.11.13 항해 99 알고리즘 풀이 2일차(2) (0) 2021.11.12 항해 99 2주차 알고리즘 풀이 (0) 2021.11.12 항해99 2주차 알고리즘 풀이 (0) 2021.11.12 항해99 2주차 알고리즘풀이 (0) 2021.11.11