Skip to content

Commit fe45305

Browse files
committed
ksb-BJ1034Lamp
1 parent 80bbb50 commit fe45305

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

src/week8/BJ1034Lamp/Main.java

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,80 @@
11
package week8.BJ1034Lamp;
22

3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.StringTokenizer;
7+
/**
8+
* [스위치]
9+
* - 짝수번 누름 : 0번 누름과 같음
10+
* - 홀수번 누름 : 1번 누름과 같음
11+
* K 의 짝수 홀수
12+
* - 전체가 켜질 수 있는 행의 수 정해져있음
13+
*
14+
* -> 0의 숫자에 따라 최대 행의개수가 바뀜
15+
* -> k가 짝수이면, 0의 개수도 짝수 !!
16+
* -> 그 행의 불을 켜기 위해 0의 개수 , k개보다 많으면 안됨 그럼 다 킬 수 없는딩?
17+
*
18+
* - 겹치는 문자열의 개수 세고 0 개수 파악하기
19+
* - 반복문 안에서 K 가 0의 수를 넘을 때, 안넘을 떄 구분
20+
* --안넘었을 경우 그 다음 겹치는 문자열로 넘어가기
21+
* -- 넘었을 경우 K-0의 수 가 짝수, 홀수 구분
22+
* -- 짝수일 경우 답, 홀수 일 경우 문자열로 넘어가기
23+
*
24+
* */
325
public class Main {
26+
27+
public static void main(String[] args) throws IOException {
28+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
29+
StringTokenizer st = new StringTokenizer(br.readLine());
30+
31+
int n = Integer.parseInt(st.nextToken()); // 행의 개수
32+
int m = Integer.parseInt(st.nextToken()); // 열의 개수
33+
34+
String[] str = new String[n]; // 행들 저장할 배열
35+
int[][] board = new int[n][m];
36+
for(int i=0;i<n;i++) {
37+
str[i] = br.readLine();
38+
for(int j=0;j<m;j++) {
39+
board[i][j] = str[i].charAt(j)-'0';
40+
}
41+
}
42+
43+
int k = Integer.parseInt(br.readLine());
44+
45+
// for(int i=0;i<n;i++) {
46+
// for(int j=0;j<m;j++) {
47+
// System.out.print(board[i][j]+ " ");
48+
// }
49+
// System.out.println();
50+
// }
51+
52+
int max =0;
53+
/* 모든 행을 돌면서 0의 개수 구하기 ~ */
54+
for(int i=0;i<n;i++) {
55+
int zeroCnt=0;
56+
57+
for(int j=0;j<m;j++) {
58+
if(board[i][j]==0) zeroCnt++;
59+
}
60+
61+
int onRow =0; // 불이 켜진 행의 개수
62+
// 0개의 개수가 k번 보다 작거나 같아야하고, 0의 개수와 k번의 2로 나눈값이 같으면 짝수일땐 짝수,홀수일땐 홀수인것 확인
63+
if(zeroCnt <= k && zeroCnt % 2 == k %2) {
64+
// 현재 행과 같은 패턴(행)이 있으면 onRow 값 올려주기
65+
for(int j=0;j<n;j++) {
66+
if(str[i].equals(str[j])) {
67+
onRow++;
68+
}
69+
}
70+
// 최댓값 갱신해주기
71+
max = Math.max(max, onRow);
72+
}
73+
74+
}
75+
System.out.println(max);
76+
77+
}
78+
79+
480
}

0 commit comments

Comments
 (0)