코딩기록

항해 11일) 알고리즘 테스트 본문

항해99/챕터2 알고리즘

항해 11일) 알고리즘 테스트

뽀짝코딩 2022. 1. 21. 00:05
728x90

2문제 중 한문제를 선택, 코드풀이 영상url과 코드를 제출하는 방식으로 진행 되었다.

 

초기아이디어

문자열 -> split()으로 하나씩 배열에 담는다.

문자 배열 -> 

 

 

답안

1번. 내가 제출한것

//phone- 1062509911
function solution(phone){
  let long_num = phone;
	let result="";

  //하나씩 배열로 만들고 
  let plus_num = long_num.split("");
  //"0"을 그 배열 앞에 추가
  plus_num.unshift("0");
  //배열원소를 하나로 합하고
  let word = plus_num.join("");
  //정규식 : 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴
  //숫자 문자에 대응되는 \d를 써서3,4,4자리 숫자를 차례대로 찾고  
  //첫번째괄호를 찾고 $1, 하이픈 - 붙이기
  let deviced_number = word.replace(/^(\d{3})(\d{4})(\d{4})$/, `$1-$2-$3`); 
  
  return result = deviced_number;
}
console.log(solution("1062509911"));

 

2번. 불필요한 변수를 줄인것 (팀원 답보고 매번 변수 선언할 필요 없다는걸 배움)

//phone- 1062509911
function solution(phone){
  let result="";
  let num = phone.split("");

  num.unshift("0");
  num = num.join("");
  num = num.replace(/^(\d{3})(\d{4})(\d{4})$/, `$1-$2-$3`); 
  
  return result = num; 
}
console.log(solution("1062509911"))
//////////////////////////////// 코드 풀이 /////////////////////////////
//phone- 1062509911
function solution(phone){
  let result="";                  //result를 비워 놓고 
  let num = phone.split("");      //split으로 하나하나 문자배열로 만들고

  num.unshift("0");               //배열 맨 앞 엘리먼트에 "0"추가
  num = num.join("");             //배열의 원소를 문자열로 합한걸 num에 넣고

  //정규식 : 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴
  //숫자 문자에 대응되는 \d 캐릭터를 써서3,4,4자리 숫자를 차례대로 찾고  
  //첫번째괄호를 $1로 찾고 하이픈 - 붙인다.


  //정규식 리터럴(슬래쉬"/"로 감싸는 패턴)로 시작, 끝 앞뒤로 감싼다.
  //   ^(캐럿) → 라인 시작,   $ → 라인 끝   
  //^(캐럿) 와 $(달러) 문자는 전체 문자열의 시작과 끝에 대응되는 것이 아니라 
  //각 라인의 시작과 끝에 대응된다.

  //문자열 내부의 단어를 바꾸기 위해 replace() 메소드를 이용. 
  //치환 문자열로는 $1 과 $2 를 사용하고 있는데, 
  //이는 각각 첫 번째와 두 번째 괄호가 쳐진 부분에 대응된 문자열을 가리킨다.
  // `` 백틱은 ""쌍따옴표, ''따옴표로 변경해도 된다.
  //템플릿 리터럴을 사용할때 ( ` )백틱을 쓴다.
  //문자열 및 변수 시작과 끝에 `백틱을 쓰고 변수는 ${변수}의 형식으로 쓴다.
  //이렇게 문자열에 변수를 삽입할 수 있는 기능을 문자열 인터폴레이션(${변수}) 이라한다.

  num = num.replace(/^(\d{3})(\d{4})(\d{4})$/, '$1-$2-$3'); 
  
  return result = num; 
}
console.log(solution("1062509911"))

 

 

let phone = "1062509911"; 
let result="0"; 
for(let i=0;i<phone.length;i++){ 
result += phone.charAt(i); 
if(i == 1 || i == 5){
 result += "-"; 
} 
} 
console.log(result);


//phone- 1062509911
function solution(phone){
	let result="";
  let num = phone.split("");

  num.unshift("0");
  num = num.join("");
  num = num.replace(/^(\d{3})(\d{4})(\d{4})$/, `$1-$2-$3`); 
  
  return result = num; 
}
console.log(solution("1062509911"))


function solution(phone) {
  let result = '';
  let arr = phone.split('');
  
  arr.unshift('0');
  arr.splice(3,0,'-')
  arr.splice(8,0,'-')
  arr = arr.join('');
  result = arr;

  return result;
}
console.log(solution("1062509911"))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고

*캐럿과달러

앵커: 문자열의 시작 ^과 끝 $ (javascript.info)

*정규표현식

정규 표현식 - JavaScript | MDN (mozilla.org)

*템플릿리터럴

Javascript - ES6 (` : 템플릿 리터럴) 문자열에 변수 포함시키기 (tistory.com)

 

 

 

 

 

 

반응형
Comments