일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 배열을 객체로
- 레디스 확인
- 시퀄 문법
- sql like연산자
- 프론트엔드 스쿨
- ...점점점문법
- 객체를 배열로
- 재귀스왑
- 5.3.8 Modifying Queries
- 객체의 밸류값만 찾기
- 코딩 어?
- 중복 문자열
- lastIndexOf()
- 문자열 중복
- sql 문자열 패턴 검색
- 배엘에서 스왑
- 중복문자제거
- @Moditying @Query
- 문자열순서바꾸기
- 제로베이스
- 중복된 단어
- 중복단어제거
- 스프링 데이타 JPA
- 깃 토큰 만료
- indexOf()
- 객체의키값만 찾기
- 우분투 시간 변경
- js 문자열을 문자배열로
- 단어 제거
- ubuntu타임존
- Today
- Total
코딩기록
항해 6일)JS - 9프로그래머스 핸드폰 번호 가리기 본문
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- s는 길이 4 이상, 20이하인 문자열입니다.
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
답안
1번 split()함수
1) 문자열 length만큼 for문을 돌면서 별표로 바꿈 (length - 4까지)
2) split() 이용 문자열을 분리하여 배열로 저장 ( split(""); 하나하나분리함 )
3) for문 돌리기
4) join() 메소드로 배열의 모든 요소를 연결하여 문자열로
[0, 1, 2, 3, 4, 5, 6, ]
function solution(phone {
var result = ""; //result를 빈문자열로 초기화
result = phone.split(""); //문자열을 하나하나 분리해 값을 배열에 저장
for ( var i = 0; i <= phone.length -4; i++){
result[i] = "*";
}
return result.join("");
}
2.번
.repeat(), .substring() 메서드를 사용
function solution(phone) {
const len = phone.length - 4; //뒤 4자리 빼서(삭제) len에 저장
return "*".repeat(len) + phone.substring(len); //phone에다 subsirng으로
//len 첫인덱스7 ~끝인덱스10만 저장
// 뒤 4자리를 기준으로 앞의 번호들을 repeat를 사용해 *처리
}
예시)
phone = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
len = [1, 2, 3, 4, 5, 6]
phone.substring(len) =[ 7, 8, 9, 10]
repeat()을 이용해 "*"을 lean만큼 연속으로 붙임 = ******
※ 알아야할것 ※
1. join() 메서드 배열의 모든 요소를 연결해 하나의 문자열로 만듬.
array.join(구분자쓰기)
소괄호() 안은 매개변수로 배열의 각요소를 구분함. 구분자는 필요한 경우 문자열로 변환되고, 생략하면 배열의 원소들의 쉼표로 구분됨.
2. substring(), substr(), slice() 문자열을 자르는 방법
slice() 함수
str.slice(beginIndex[, endIndex])
slice 함수는 잘라낼 배열의 시작index와 end index를 파라미터로 받아서,
그 사이의 원소들을 새로운 배열로 만들어서 리턴합니다.
이때 원본 배열인 arr은 변경되지 않습니다.
파라미터
begin
잘라낼 배열의 시작 index
end
잘라낼 배열의 종료 index
end index의 값은 잘라낼 배열에 포함되지 않습니다.
end index가 생략되면, begin index부터 배열의 끝까지를 잘라냅니다.
리턴값
잘라낸 원소들로 만든 새로운 배열을 리턴합니다.
slice() 예제
const arr = ['a', 'b', 'c', 'd'];
const arr1 = arr.slice(1, 3); // [ 'b', 'c' ]
const arr2 = arr.slice(1); // ['b', 'c', 'd']
const arr3 = arr.slice(-3, -1); // ['b', 'c']
arr.slice(1, 3);
배열의 arr[1] ~ arr[3] 까지(arr[3]은 미포함)를 복사한, 새 배열을 리턴합니다.
arr.slice(1);
두번째 파라미터인 end 값이 입력되지 않으면,
시작 index부터 배열의 끝까지를 복사한, 새 배열을 리턴합니다.
arr.slice(-3, -1);
begin index나 end index가 음수이면,
배열의 끝에서부터의 길이를 나타냅니다.
아래 그림을 참조하세요.
1. join() 배열의 모든 요소를 연결해 하나의 문자열로 만듬
const arr = ['강', '산', '들', '바다', '구름'];
console.log(arr.join()); //구분문자열 생략시 , 표시
// 강, 산, 들, 바다, 구름
console.log(arr.join(',')); // , 를 구분자로 넣었을때와
// 강, 산, 들, 바다, 구름 //구분자생략시 동일한 결과가나옴
console.log(arr.join('')); //'' 한줄로
// 강산들바다구름
console.log(arr.join('-'));
// 강-산-들-바다-구름
주의사항!!
구분자로 빈 문자열("")을 쓰면 사용자가 인식하는 문자 하나 또는 유니코드 문자(코드포인트) 하나씩으로 나누는 것이 아니라, UTF-16 코드유닛으로 나누게 되며 써로게이트페러가 망가질수 있다.
참고
1번
*Hong's Web Development Blog
https://sharryhong.github.io/2017/01/13/algorism-01/
2번
*pmk4236블로그
※알아야할것 join() 주의사항
*스택오버플로우
※알아야할것 substring(), substr(), slice()
*어제 오늘 내일
https://hianna.tistory.com/383
'항해99 > 챕터2 알고리즘' 카테고리의 다른 글
항해 10일)JS - 21프로그래머스 이상한 문자 만들기 (0) | 2022.01.19 |
---|---|
항해 8일)JS- 17프로그래머스- 문자열 다루기 기본 (0) | 2022.01.17 |
항해 8일)JS - 13프로그래머스 2016년 (0) | 2022.01.17 |
항해 6일)JS - 5프로그래머스 문자열을 정수로 바꾸기 (0) | 2022.01.15 |
항해 5일)JS - 1프로그래머스 직사각형 별찍기 (0) | 2022.01.14 |