개발 공부/알고리즘
[항해 99 알고리즘 테스트] "1번. 전화번호 양식" JavaScript / .slice()
U_D
2022. 3. 17. 20:07
1. 문제 설명
CS 스터디 팀장이 된 지용이는 팀원들의 연락처를 수집하여 정리하는 도중 문제 하나를 발견했다.지용이는 팀원들에게 전화번호를 ‘010-1234-4567’ 양식으로 제출하기를 부탁했지만 ‘01012345678’과 같이 ‘-’ 구분 없이 붙여서 제출한 사람들의 전화번호가 엑셀에서 앞에 0이 사라진 ‘1012345678’로 보이는 것이다.지용이는 ‘1012345678’로 저장된 전화번호를 다시 ‘010-1234-5678’ 형식으로 바꾸려고 한다.지용이를 도와줄 수 있는 알고리즘을 만들어 보자
2. 제한 조건
phone은 length는 10으로 고정됩니다.
3. 예시
입력/출력
4. 풀이
[slice 활용]
- 앞자리에 문자열 0을 더해주고
- 들어오는 문자열 번호에서 slice를 통해 0번째부터 2번째 내까지 가져오고
- 문자열 하이픈 더하기
- 그다음도 같은 원리로 반복했다.
- 숫자로 된 문자열은 index값을 사용할 수 있어서 바로 진행했다.
function solution(phone){
let result="";
return result = "0" + phone.slice(0,2) + "-" + phone.slice(2,6) + "-" + phone.slice(6)
}
console.log(solution("1062509911"))
console.log(solution("1012345678"))
console.log(solution("1032501800"))
[팀원 분의 풀이]
function solution(phone){
let result=""
phone = phone.match(/\d/g) //[1,0,6,2,5,0,9,9,1,1]
phone.unshift('0') //[0,1,0,6,2,5,0,9,9,1,1]
phone.splice(7, 0, '-') //[0,1,0,6,2,5,0,-,9,9,1,1]
phone.splice(3, 0, '-') //[0,1,0,-,6,2,5,0,-,9,9,1,1]
result = phone.join('') //[010-6250-9911]
return result;
}
console.log(solution("1062509911"))
[다양한 풀이들]
function solution(phone){ //핸드폰 번호 가리기 참고
let result=""
let num=""
for (let i = 0; i < 10; i++)
if (i < 1) { //0번째 자리에는 01 추가
num += "01"
} else { //뒤에서 아홉번째 자리부터는 주어진 숫자 그대로
num += phone[i]
};console.log(num, typeof(num))
if(num.length===11){
result += num.substr(0,3); //인덱스0에서부터 길이가3 010
result += "-";
result += num.substr(3,4); //인덱스3에서부터 길이가4 6250
result += "-";
result += num.substr(7); //인덱스7부터 마지막까지 9911
}
return result;
}
console.log(solution("1062509911"))
function solution(phone) {
let result = ""
var temp = ""
temp = "0" + phone
result = `${temp.slice(0,3)}-${temp.slice(3,7)}-${temp.slice(7,11)}`
return result;
}
console.log(solution("1062509911"))