Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 1120번 : 문자열 본문
https://www.acmicpc.net/problem/1120
문자열 처리 분류 문제.
두 문자열 A와 B의 length를 구한 다음
0부터 B.length - A.length 까지 for문 진행. 이 때의 0 ~ B.length - A.length는 문자열 B의 시작 인덱스를 나타낸다.
위 for문 안에 0 ~ A.length 까지 for문 진행. 이 때의 0 ~ A.length - 1는 문자열 A의 시작 인덱스를 나타낸다.
String.charAt(index) 를 통해 A, B의 문자를 하나씩 꺼내 비교해서 다르면 count + 1을 한다.
모든 for문을 통해 count가 가장 최소인 값을 출력하면 된다.
** 각 경우에 따라 나온 count값 중 최소인 값을 얻는 방식은 두 가지가 있다.
** 1) ArrayList에 다 넣고 진행
** 2) min 변수를 하나 만들어서 Math.min을 통해 min값 갱신
** 다른 개발자 코드는 2)를 사용했지만, 1)과 2)를 돌려본 결과 시간은 동일하게 나왔다..
소스코드
package string;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 문자열 처리 문제
// 문자열
// 문자 하나씩 인덱스 비교
public class p1120 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String a = st.nextToken();
String b = st.nextToken();
int aLen = a.length();
int bLen = b.length();
// 1) ArrayList에 다 넣고 진행
// 2) min 변수를 하나 만들어서 경우 하나씩 비교해서 최솟 값(min) 갱신
// ArrayList<Integer> list = new ArrayList<Integer>();
int min = Integer.MAX_VALUE;
for(int i = 0; i <= bLen - aLen; i++) { // b의 인덱스
int count = 0;
for(int j = 0; j < aLen; j++) { // a의 인덱스
char aChar = a.charAt(j);
char bChar = b.charAt(i + j);
if(aChar != bChar) {
count++;
}
if(min < count) {
break;
}
}
min = Math.min(min, count);
// list.add(count);
}
// Collections.sort(list);
System.out.println(min);
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
(JAVA) 백준 9933번 : 민균이의 비밀번호 (0) | 2020.02.29 |
---|---|
(JAVA) 백준 2857번 : FBI (Feat. 정규표현식 정리 표) (0) | 2020.02.29 |
(JAVA) 백준 7562번 : 나이트의 이동 (0) | 2020.02.29 |
(JAVA) 백준 4485번 : 녹색 옷 입은 애가 젤다지? (0) | 2020.02.23 |
(JAVA) 백준 10808번 : 알파벳 개수 (0) | 2020.02.22 |
Comments