풀이 방법
행의 모든 열이 1인 상태(켜진상태) 인 경우를 세는 것이기 때문에 초기 상태가 같은 경우에는 스위치를 눌러도 변화된 상태가 같기 때문에 Map에 넣어서 갯수를 세어주었다.
K가 짝수일 때는 행의 0의 개수가 짝수일 때 모두 1로 바뀔 수 있고 K가 홀수일 때는 행의 0의 개수가 홀수일 때 모두 1로 바뀔 수 있어서
나누어서 생각해주었다.
내 코드
package com.company;
import java.io.*;
import java.util.*;
public class Main {
static int N, M, K;
static Map<String, Integer> map = new HashMap<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
String str = br.readLine();
map.put(str, map.getOrDefault(str, 0) + 1);
}
K = Integer.parseInt(br.readLine());
int max = 0;
for (String s : map.keySet()) {
int count = 0;
for (int i = 0; i < M; i++) {
if (s.charAt(i) == '0') {
count++;
}
}
if (count <= K) {
if (K % 2 == 0 && count % 2 == 0) {
max = Math.max(max, map.get(s));
} else if (K % 2 == 1 && count % 2 == 1) {
max = Math.max(max, map.get(s));
}
}
}
System.out.println(max);
}
}
'코딩테스트 > [백준] 코딩테스트 연습' 카테고리의 다른 글
암호코드 - 2011번 (0) | 2021.12.01 |
---|---|
공유기 설치 - 2110번 (0) | 2021.12.01 |
감소하는 수 - 1038번 (0) | 2021.11.25 |
리모컨 - 1107번 (0) | 2021.11.23 |
미친 로봇 - 1405번 (0) | 2021.11.22 |