> 개발-IT-인터넷/> JAVA

[해커랭크(HackerRank) JAVA 풀이] - Tag Content Extractor

jini:) 2023. 9. 19. 12:22
728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Strings > Tag Content Extractor
 

HackerRank

HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical talent from anywhere!

www.hackerrank.com

 

XML이나 HTML과 같은 태그 기반 언어에서 콘텐츠는 <tag>콘텐츠</tag>와 같이 시작 태그와 끝 태그 사이에 포함됩니다. 해당 종료 태그는 /로 시작합니다.

 

태그 기반 언어로 된 텍스트 문자열이 주어지면 이 텍스트를 구문 분석하고 다음 기준을 충족하는 잘 구성된 태그 시퀀스 내에 포함된 내용을 검색합니다.

  1. 시작 태그와 종료 태그의 이름은 동일해야 합니다. 텍스트가 h1 태그로 시작하고 일치하지 않는 h2 태그로 끝나기 때문에 HTML 코드 <h1>Hello World</h2>가 유효하지 않습니다.
  2. 태그는 중첩될 수 있지만 중첩된 태그 사이의 내용은 유효하지 않은 것으로 간주됩니다. 예를 들어, <h1><a>콘텐츠</a>무효</h1>에서 콘텐츠는 유효하지만 무효는 유효하지 않습니다.
  3. 태그는 인쇄 가능한 모든 문자로 구성될 수 있습니다.

 

Input Format

  • 입력의 첫 번째 줄에는 단일 정수 N(줄 수)이 포함됩니다.
  • N개의 후속 줄에는 각각 한 줄의 텍스트가 포함됩니다.

 

Constraints

  • 1 ≤ N ≤ 100
  • 각 줄에는 최대 10⁴개의 인쇄 가능한 문자가 포함됩니다.
  • 모든 테스트 케이스의 총 문자 수는 10⁶를 초과하지 않습니다.

 

Output Format

각 줄에 대해 유효한 태그 안에 포함된 내용을 출력합니다.
한 줄에 유효한 콘텐츠의 인스턴스가 여러 개 포함되어 있으면 유효한 콘텐츠의 각 인스턴스를 새 줄에 출력합니다. 유효한 내용이 없으면 None을 출력하세요.

 

 

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

 

 

Code

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution{
	public static void main(String[] args){
		
		Scanner in = new Scanner(System.in);
		int testCases = Integer.parseInt(in.nextLine());
        Pattern p = Pattern.compile("<(.+)>([^<]+)</\\1>");
		while(testCases>0){
			String line = in.nextLine();
			
          	//Write your code here
            Matcher m = p.matcher(line);
            boolean matched = false;
            while( m.find() ) {
                matched = true;
                System.out.println(m.group(2));
            }
            if( !matched ) {
                System.out.println("None");
            }
			
			testCases--;
		}
	}
}

 

참고

자바 정규식 (Java RegExp) 정규표현식 사용법

 

자바 정규식 (Java RegExp) 정규표현식 사용법

[해커랭크(HackerRank) JAVA 풀이] - Java Regex 이전 글에서 해커랭크 문제를 풀다가, 자바 정규식에 대해 좀 더 알아볼 필요성을 느꼈다. 자바 정규표현식 사용법에 대해 자세히 알아보자. 정규표현식

ji-ni.tistory.com

 

 

개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.

 

 

 

728x90
반응형