문제의 저작권은 SW Expert Academy에 있습니다. (출처)
1. 문제
1-1. 문제 설명
1-2. 문제 해석
2. 코드
3. 실행시간
1. 문제
1-1. 문제 설명
1-2. 문제 해석
쉬어가는 문제인 것 같다. (휴)
처음에는 replaceAll을 이용해서 찾을 문자열을 전부 다 '@'로 바꿔버리고
contains를 이용해서 @의 개수를 세서 리턴하려고 했는데
문자열을 이리저리 자르고 붙이고 가지고 놀아보라는 문제 의도에 벗어나서 문자열을 자르는 substring만 사용했다.
(사실 정규식을 잘 몰라서 실패했...)
2. 코드
public class Day3_1213_문자열 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int tc = 1; tc <= 10; tc++) {
StringBuilder sb = new StringBuilder();
br.readLine();
String key = br.readLine();
String str = br.readLine();
int keyLen = key.length();
int strLen = str.length();
int cnt = 0;
for (int i = 0; i <= strLen - keyLen; i++) {
if(key.equals(str.substring(i, i + keyLen))) {
cnt++;
}
}
sb.append("#" + tc + " " + cnt);
System.out.println(sb.toString());
}
}
}
그냥 간단하게 일일이 포문을 돌면서 비교 검사를 했다.
3. 실행시간
💡 느낀 점
- 이 문제에서는 별로 효율을 보여주진 못하지만 찾고자 하는 문자열의 길이가 긴 경우에 적합한 알고리즘이 있다고 한다. 바로 KMP 알고리즘과 보어이-무어 알고리즘!
- 따로 공부해서 알고리즘 카테고리에 포스팅 해야겠다.
반응형
'문제 풀이 > SWEA' 카테고리의 다른 글
1216번 - 회문2 (0) | 2021.08.04 |
---|---|
1215번 - 회문1 (0) | 2021.08.04 |
1210번 - Ladder1 (0) | 2021.08.03 |
1220번 - Magnetic (0) | 2021.08.02 |
1208번 - Flatten (0) | 2021.08.02 |
댓글