1. 문제
https://www.acmicpc.net/problem/2495
2. 풀이
- 이 문제의 핵심은 이전 문자를 기억하고, 이전 문자와 같은 값이 연속적으로 이루어져 있거나, 같은 문자 중에 제일 많이 나온 값을 출력하는 게 핵심이다.tmp라는
- 변수에 charAt(0) index 0번째 값을 저장해 놓는다.
- 이전 문자와 비교하기 위하여 이중 for 문에서 index 1번째 위치부터 하나씩 쪼개어 준다.
- 비교하여 처음에 저장한 문자와 같으면 count 변수에 값을 1씩 증가시킨다.
- 같지 않으면 Math.max 메소드를 활용하여 count와 max 가 큰지 비교해준다. (해당 문자열에 더 많이 중복되는 값이 있을 경우 그를 비교하기 위하여 사용하였다.)
- 같지 않으면에서 count = 1로 초기화도 해준다. (값이 전부 다를 경우)
- 마지막으로 제일 중요한 같지 않은 값을 저장해주고, 출력을 위해 한 번 더 비교를 해준다.
3. 코드
package baekjoon;
import java.util.Scanner;
public class Q2495 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
String str = scanner.next();
int count = 0;
int max = 0;
char tmp = str.charAt(0); // 처음 문자 한개 저장
for (int j = 1; j < str.length(); j++) {
char ch = str.charAt(j);
if (tmp == ch) {
count++;
} else {
max = Math.max(max, count);
count = 1;
tmp = ch;
}
max = Math.max(max, count);
}
System.out.println(max);
}
}
}
'Algorithm' 카테고리의 다른 글
[Java] 백준 9366번 : 삼각형 분류 (0) | 2022.03.02 |
---|---|
[Java] 백준 2309번 : 일곱 난쟁이 (0) | 2022.02.23 |
[Java] 백준 10798번 : 세로읽기 ver.2 (0) | 2022.02.16 |
[Java] 백준 10804번 : 카드 역배치 (0) | 2022.02.16 |
[Java] 백준 10798번 : 세로읽기 (0) | 2022.02.15 |