728x90
반응형
2024.05.20기준 - 브론즈1
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 '리버스-스트릭'규칙을 도입해, 연속해서 며칠 동안 문제를 풀지 않았는지를 알아내는 문제입니다.
처음 접근은 최대 리버스 스트릭 의 개수를 먼저 선 출력을 해야되기 때문에,
이름과 최장 리버스 스트릭의 개수를 가지고 있는 변수를 따로 생성을 해야겠다고 생각을 했습니다.
그래서 출력을 저장하는 변수를 sb, subSb 2개를 선언했습니다.
최대 리버스 스트릭의 개수를 계산하기 위해 boolean[] 변수를 생성해 모든 계산이 끝난 후 true가 들어오는 개수를 계산해 최대 리버스 스트릭의 개수를 구하였습니다.
그런 후, 동아리원의 수만큼 반복문을 통해 계산을 진행했습니다.
- StringTokenizer을 통해 입력을 받았습니다.
- 일별 활동 기록의 길이 만큼 먼저 반복을 해 리버스 스트릭 개수와 최장 리버스 스트릭을 찾아냈습니다.
- 그런 다음 마지막으로 이름을 입력받아 subSb에 최장 리버스 스트릭과 이름을 저장했습니다.
- 최장 리버스 스트릭에 해당하는 boolean[]에 true로 저장을 해 최대 리버스 스트릭의 개수를 나중에 구할 수 있게 했습니다.
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); // KPSC 동아리원의 수
int m = Integer.parseInt(st.nextToken()); // 일별 활동 기록의 길이
int count = 0; // 리버스 스트릭 총 개수
boolean[] check = new boolean[m + 1]; // 리버스 스트릭 개수 체크
int c, max;
char s;
String name;
// 리버스 스트릭 개수를 입력받고 이름을 출력하기 위한 sub StringBuilder
StringBuilder subSb = new StringBuilder();
for (int i = 0; i < n; i++) {
max = 0; // 최장 리버스 스트릭
c = 0; // 리버스 스트릭 개수
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) { // 일별 활동 기록의 길이 만큼 반복
s = st.nextToken().charAt(0);
if (s == '.') {
c++;
max = Math.max(max, c);
} else {
c = 0;
}
}
name = st.nextToken();
// 리버스 스트릭 총 개수를 위한 체크
check[max] = true;
// 최장 리버스 스트릭과 이름을 출력
subSb.append(max).append(" ").append(name).append("\n");
}
// 리버스 스트릭 개수 측정
for (int i = 0; i <= m; i++) {
if (check[i]) {
count++;
}
}
sb.append(count).append("\n").append(subSb.toString());
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 31821번 학식 사주기 (0) | 2024.05.22 |
---|---|
BAEKJOON / 백준 - JAVA 31822번 재수강 (0) | 2024.05.21 |
BAEKJOON / 백준 - JAVA 31824번 근로장학생 (0) | 2024.05.19 |
BAEKJOON / 백준 - JAVA 7572번 간지(干支) (0) | 2024.05.18 |
BAEKJOON / 백준 - JAVA 31825번 알파벳과 쿼리 (Easy) (0) | 2024.05.16 |