[Hackerrank] Strings - TagContentExtractor 풀이

예문


https://www.hackerrank.com/challenges/tag-content-extractor/problem

Sample Input

4

<h1>Nayeem loves counseling</h1>
<h1><h1>Sanjay has no watch</h1></h1><par>So wait for a while</par>
<Amee>safat codes like a ninja</amee>
<SA premium>Imtiaz has a secret crush</SA premium>

Sample Output

Nayeem loves counseling
Sanjay has no watch
So wait for a while
None
Imtiaz has a secret crush

해석

  • 태그 내용 추출기

풀이

  • 정규식 <(.+)>([^<]+)</\\1> 사용
    • <(.+)> : < 로 시작하는 하나 이상의 문자 그룹
    • ([^<]+) : ^가 아닌 하나 이상의 문자
    • </\\1> : </ 로 시작하는 앞의 첫번째 그룹 (.+)

제약사항

  • 1 <= n <= 100

코드

public String solution(String input){
  String regex = "<(.+)>([^<]+)</\\1>";

  boolean matchFound = false;
  Pattern p = Pattern.compile(regex);
  Matcher m = p.matcher(input);
  String output = "";

  while (m.find()) {
    input = m.group(2);
    output += input;
    System.out.println(output);
    matchFound = true;
  }

  if(!matchFound){
    output = "None";
    System.out.println(output);
  }
  return output;
}