문제
https://swexpertacademy.com/main/solvingProblem/solvingProblem.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
접근
주어진 문자열을 처음부터 탐색을 시작하는 데, 만약 찾으려는 문자열 x의 시작점이 같으면 check 함수가 실행되어 찾는 문자열이 완전하게 존재하는 지 확인한다.
check 함수는 아래와 같다.
public static boolean check(String x, String s, int start) {
if(s.length() < start + x.length())return false;
for(int k=1; k<x.length(); k++) {
if(x.charAt(k) != s.charAt(k+start)) return false;
}
return true;
}
여기에서 2번째 줄 if문으로 길이를 check 해주지 않는다면 아마 3번째 testcase가 통과하지 않을 거고 답이 19인데 20으로 출력될 것이다.
또, 그렇게 하지 않으면 indexOutOfBounds 에러가 뜨기 때문에 잘 확인해줘야 한다.
그렇게 완성된 최종 코드는 아래와 같다.
최종 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
class Solution
{
public static boolean check(String x, String s, int start) {
if(s.length() < start + x.length())return false;
for(int k=1; k<x.length(); k++) {
if(x.charAt(k) != s.charAt(k+start)) return false;
}
return true;
}
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//Test case 10개
for(int i=1; i<=10; i++) {
br.readLine();
String x = br.readLine();
String s = br.readLine();
int count = 0;
for(int j=0; j<s.length(); j++) {
//첫 번째 글자가 같으면 검사 시작
if(s.charAt(j) == x.charAt(0)) {
boolean flag = check(x,s,j);
if(flag) {
j+= x.length() - 1;
count++;
}
}
}
System.out.printf("#%d %d\n", i, count);
}
}
}
'‡ CODING TEST STUDY ‡' 카테고리의 다른 글
(미완) 삼성 코테 기출 (마법의 숲 탐색, 루돌프의 반란, 미로) (0) | 2024.11.17 |
---|---|
[JAVA] SWEA | 2382. [모의 SW 역량테스트] 미생물 격리 (0) | 2024.11.17 |
[JAVA] SWEA | 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2024.11.16 |
[Java] 소수 판별 - 에라토스테네스의 채 (0) | 2024.05.18 |