1108. Defanging an IP Address

Jeon seong jin·2020년 3월 26일
0

알고리즘

목록 보기
6/9

릿코드 알고리즘을 풀면서 천천히 정리하는 시간..!

문제

Given a valid (IPv4) IP address, return a defanged version of that IP address.

A defanged IP address replaces every period "." with "[.]".

Example 1:

Input: address = "1.1.1.1"
Output: "1[.]1[.]1[.]1"
Example 2:

Input: address = "255.100.50.0"
Output: "255[.]100[.]50[.]0"

문제 설명

문제와 코드 내용을 보면 특정한 문자(여기선 ".")를 다른 문자로 변경하라는 문제로 보였다.

풀이 과정

특정 문자열을 변경하는 방법이 무엇일까라는 생각을 하고 처음에는 반복문으로 문자를 순회하여 변경하면 되는 게 아닌가? 라는 생각을 했지만...(처절하게 실패했다...)
그래서 다시 배열의 메서드에 대해 생각해보니 replace를 생각하게 되었다. 하지만 replace()는 "한개의 문자열만 변경하기에 replaceAll을 보게 되었지만 replaceAll은 함수로 코드를 깔끔하게 사용하지 못한다고 생각하였기에 정규식 표현을 사용하게 되었다.

var defangIPaddr = function(address) {
   //정규식 replace(/./gi,'[.]') <= 이렇게 하면 특정 문자열이 아닌 모든 문자가 변경된다.
  	let result = address.replace(/\./gi,'[.]')
    return result;
};
defangIPaddr('1.1.1.1'); //결과:"1[.]1[.]1[.]1"

다른 풀이

굳이 정규식을 사용할 것이 아닌 다른 표현도 있을 거라고 생각하였다. 그리하여 다시 보게된게 split()join() ..!
split은 문자열을 인자로 주어진 문자열일 기준으로 쪼개서 배열에 담는다.
join 메소드는 배열의 요소들을 문자열로 변환 후, 메소드에 주어진 구분자를 이용해 하나의 문자열로 결합하여 반환합니다.

var defangIPaddr = function(address) {
  //split으로 '.'을 기준으로 쪼개서 배열화 시키고 join 메서드를 이용해 값을 변경
   return address.split('.').join('[.]');
};
defangIPaddr('1.1.1.1'); //결과:"1[.]1[.]1[.]1"

느낀점

join메서드와split 메서드를 다시 공부하는 계기가 되었고 역시 기초가 탄탄해야 된다라는 생각을 가지게 되었다.

profile
-기록일지

0개의 댓글