본문 바로가기
문제 풀이/SWEA

1213번 - String

by Kim Juhwan 2021. 8. 3.

문제의 저작권은 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. 실행시간

오늘은 4등

 

 

 

 


💡 느낀 점

  • 이 문제에서는 별로 효율을 보여주진 못하지만 찾고자 하는 문자열의 길이가 긴 경우에 적합한 알고리즘이 있다고 한다. 바로 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

댓글