본문 바로가기
걸어서 개발 속으로

백준 14551 Card Game Contest Java

by puy0 2024. 10. 15.

술먹고 브론즈2 입출력 문제를 풀었는데 계속 틀렸다

후에 그 기억이 떠올라 바로 풀어버리려고했다

하지만 또 틀렸다

사나이 기백으로 풀었고 그 정리를 남긴다

 

N은 0, M은 1이 최소값으로 올수 있다

Ai는 0이 올수 있다

 

카드 세트가 없다면 하나를 빌려주기때문에

입력에 0이 오면 1로 바꿔준다

 

질문게시판에 작성된

아무것도 안하는 방법을

하나의 방법으로 생각한다는것은 잘못 되었다

 

 


틀린 이유:

경우의 수를 구할때 값이 커지는 상황에 대응하지 않았다

 

package org.problem.solving.BOJ.Java14551;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Java14551 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        int ans = 1;
        for (int i = 0; i < N; i++) {
            int a = Integer.parseInt(br.readLine());
            if (a == 0) a = 1; // 카드가 없으면 한세트 주기때문에 1
            ans = (ans * a)%M;
            // 최악의 경우 200개의 0이 사용된 정수가 저장될수 있어서
            // M의 나머지값을 저장 해야 함
        }
        System.out.println(ans%M);
    }
}

댓글