[ 백준 ] 9996 - 한국이 그리울 땐 서버에 접속하지(with. JAVA)

2 min read

💡문제 분석 요약
-- 문제 --
입력 : 첫째 줄에 일의 개수 N이 주어진다. (1 ≤ N ≤ 100)
둘째 줄에는 패턴이 주어진다. 패턴은 알파벳 소문자와 별표(아스키값 42) 한 개로 이루어져 있다. 문자열의 길이는 100을 넘지 않으며, 별표는 문자열의 시작과 끝에 있지 않다.
다음 N개 줄에는 파일 이름이 주어진다. 파일 이름은 알파벳 소문자로만 이루어져 있고, 길이는 100을 넘지 않는다.
출력 : 총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다.
💡알고리즘 설계
BufferedReader로 입력받기
*기준으로 나눠서 배열 저장
입력받은 앞부분과 뒷부분이 배열[0] 과 [1]과 일치한지 확인
확인 후 결과 출력
💡시간복잡도
O(N)
💡틀린 이유
- 문자열 접근 방법
💡틀린 부분 수정 or 다른 풀이
package backjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BackJoon9996 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String pattern=br.readLine();
String[] patterns = pattern.split("\\*");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
String tmp = br.readLine();
if (tmp.length() < pattern.length() - 1) {
sb.append("NE\n");
continue;
}
if (tmp.substring(0, patterns[0].length()).equals(patterns[0]) &&
tmp.substring(tmp.length() - patterns[1].length()).equals(patterns[1])) {
sb.append("DA\n");
}else {
sb.append("NE\n");
}
}
System.out.println(sb);
}
}
💡느낀점 or 기억 할 정보
‘*’로 분리할 때 특수문자니까 \이용하기
StringBuilder : String은 불변 ! 따라서 문자를 더하면 새로운 객체가 생성된다. 이를 해결하기 위해 StringBuilder 사용한다. 기존의 데이터를 이용하여 작업하기 때문에 속도가 빠르다.
0
Subscribe to my newsletter
Read articles from Soyulia directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Soyulia
Soyulia
Nice to meet u :) Im Backend Developer