개발자 톡
연습문제 톡
[21년 재직자 대회 예선] 비밀 메뉴
비밀메뉴 반례
- 등록일
- 2024-02-02 12:03:30
- 조회수
- 338
- 작성자
- calmnature
테스트 케이스 26-3 / 32-3 / 33-3/ 34-3의 경우 통과를 하지 못 하는데 다음 코드에서 뭐가 잘못 됐을까요?
혹시 실패하는 입력 예시도 알려주시면 감사하겠습니다.
public class Main { static int[] pattern, btnControl, M_N_K; static final String secret = "secret"; static final String normal = "normal"; // M : 비밀 메뉴 길이, N : 사용자 버튼 입력 횟수, K : 버튼 수 (1 ~ K) public static void main(String[] args) throws IOException{ setData(); System.out.println(checkSecret()); } private static String checkSecret() { int M = M_N_K[0]; int N = M_N_K[1]; int K = M_N_K[2]; if(M > N) return normal; int index = 0; int checkCount = 0; for(int i = 0; i < N; i++){ if(btnControl[i] == pattern[index]){ checkCount++; index++; }else { index = 0; checkCount = 0; continue; } if(checkCount == M){ break; } } return checkCount == M ? secret : normal; } private static void setData() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); M_N_K = new int[]{ Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) }; st = new StringTokenizer(br.readLine()); pattern = new int[M_N_K[0]]; for(int i = 0; i < M_N_K[0]; i++){ pattern[i] = Integer.parseInt(st.nextToken()); } st = new StringTokenizer(br.readLine()); btnControl = new int[M_N_K[1]]; for(int i = 0; i < M_N_K[1]; i++){ btnControl[i] = Integer.parseInt(st.nextToken()); } br.close(); } }
#[21년_재직자_대회_예선]_비밀_메뉴