한국이 그리울 땐 서버에 접속하지 - 9996

Seongjin Jo·2023년 4월 9일
0

Baekjoon

목록 보기
12/51

문제

//입력
3
a*d
abcd
anestonestod
facebook

//출력
DA
DA
NE

풀이

import java.util.*;

// 한국이 그리울 땐 서버에 접속하지 - S3
public class ex9996 {

    public static ArrayList<String> solution(int n,String s, String[] arr){
        ArrayList<String> answer = new ArrayList<>();

        // '*'을 기준으로 문자열을 나누는 법.
        String[] split = s.split("\\*");

        for(String str : arr){
            if(str.length() < split[0].length() + split[1].length()){
                answer.add("NE");
            }
            else{
                String front = str.substring(0, split[0].length());
                String back = str.substring(str.length() - split[1].length(), str.length());

                if(front.equals(split[0]) && back.equals(split[1])){
                    answer.add("DA");
                }
                else answer.add("NE");
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);

        int n = sc.nextInt();
        String s = sc.next();
        String[] arr = new String[n];
        for(int i=0; i<n; i++){
            arr[i]=sc.next();
        }

        for(String str : solution(n,s,arr)){
            System.out.println(str);
        }
    }
}

2번째 줄의 '*'을 기준으로 앞문자와 뒷문자가 일치하면 "DA" 불일치하면 "NA"를 출력하는 문제이다.
핵심은 split을 이용한 분할법.

  1. split() 함수를 이용해 '*'을 기준으로 문자를 나눠준다.
  2. 만약에 비교할 문자의 길이가 '*'을 기준으로 나눈 문자보다 길이가 짧으면 "NA".
  3. str.substring() 함수를 이용해 비교할 문자를 split()한 앞,뒤 길이만큼 front,back으로 바꿔준다.
  4. equals()를 이용해 일치하면 "DA" 불일치면 "NA" 출력.

0개의 댓글