-
[JS] 전화번호 형식의 문자열을 리턴하는 알고리즘 풀이Computer Science/알고리즘 2023. 4. 25. 17:34
1. 문제
0-9 사이의 정수를 요소로 갖는 배열을 입력받아 전화번호 형식의 문자열을 리턴해야 합니다.
인자 1 : arr
- number 타입을 요소로 갖는 배열
- arr[i]는 0 이상 9 이하의 정수
- 배열의 길이는 8 또는 11
출력
- string 타입을 리턴해야 합니다.
주의 사항
- 반복문(for, while) 사용은 금지됩니다.
- 배열의 길이가 8인 경우, 앞에 [0, 1, 0]이 있다고 가정합니다.
예시
let output = createPhoneNumber([0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8]); console.log(output); // --> '(010)1234-5678' output = createPhoneNumber([8, 7, 6, 5, 4, 3, 2, 1]); console.log(output); // --> '(010)8765-4321' output = createPhoneNumber([0, 1, 1, 4, 3, 2, 1, 8, 7, 6, 5]); console.log(output); // --> '(011)4321-8765'
2. 문제 풀이를 위한 개념
1) unshift
새로운 요소를 배열 앞에 추가한다. 예시는 아래와 같다.
이때 array1.unshift()는 array1의 배열의 개수를 반환하니 주의하자.
배열을 리턴하고 싶다면 array1을 따로 사용해야 한다.
const array1 = [1, 2, 3]; console.log(array1.unshift(4, 5)); // Expected output: 5 console.log(array1); // Expected output: Array [4, 5, 1, 2, 3]
2) shift
const array1 = [1, 2, 3]; const firstElement = array1.shift(); console.log(array1); // Expected output: Array [2, 3] console.log(firstElement); // Expected output: 1
3) join
배열의 모든 요소를 연결해서 하나의 문자열로 만든다.
const elements = ['Fire', 'Air', 'Water']; console.log(elements.join()); // Expected output: "Fire,Air,Water" console.log(elements.join('')); // Expected output: "FireAirWater" console.log(elements.join('-')); // Expected output: "Fire-Air-Water"
3. 풀이과정
1. arr로 들어온 배열의 길이가 8인 경우는 010을 unshift로 앞에 순서대로 붙여준다.
2. 길이가 8이 아닌 경우 = 길이가 11인 경우
3. 길이가 11인 경우에는 [0,1,0], [1,2,3,4], [5,6,7,8] 이렇게 잘라서 각각 새로운 배열에 할당한다.
4. 템플릿 리터럴을 사용하여 각각 (010)1234-5678 형태로 return한다.
4. 코드
function createPhoneNumber(arr) { if(arr.length === 8){ arr.unshift(0, 1, 0); } arr1 = arr.slice(0,3); arr2 = arr.slice(3,7); arr3 = arr.slice(7, 11); return `(${arr1.join('')})${arr2.join('')}-${arr3.join('')}`; }
'Computer Science > 알고리즘' 카테고리의 다른 글
[Node.js] 백준 실버5 2751 수 정렬하기2 (0) 2023.05.11 [JS] 알고리즘 문제 풀이 (0) 2023.04.27 [JS] 직각삼각형인지 판단하는 알고리즘 (0) 2023.04.19 [c] 에라토스테네스의 체로 소수 찾는 프로그램 (0) 2021.09.22 [기초] Map과 HashMap의 차이 (0) 2021.08.02