백준_시험감독[Java]_도움요청

2019. 4. 10. 18:14알고리즘문제/백준

얼마전부터 계속 푸는 문제마다 

틀렸습니다만 나오는데 원인을 못찾고 있다. 백준 부들부들 ,,;;;;

이전에 풀었던 문제들은 풀이 방법이 복잡한터라 한창 공부중인 내가 잘못 생각한 부분이 있거나 빠트린 케이스가 있겠거니 하고

계속 원인을 찾고 있는 상황인데

오늘 푼 문제(지금 이 문제 시험감독)는 정말 이해가 안된다................... ;

 

제가 요즘 다양한 공부를 하루종일하고 있어서 섬세하게, 논리적으로 확인이 안되고 있을 수 있습니다.

혹시 뭐가 잘못되었는지 보이는분들, 의견 댓글 달아주시면 정말 감사하겠습니다 !!!!(절실)

 

문제

https://www.acmicpc.net/problem/13458

 

13458번: 시험 감독

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

www.acmicpc.net

생각할 점

1. 시험장에 총감독관은 무조건 1명씩 들어간다. (최소 최대 1명)

2. 부감독관은 0명 이상 들어간다. 

 

따라서 우리는 각 시험장마다 들어가는 부감독관의 수를 구해주면 된다. 

부감독관의 수는 학생 수 - 총감독관이 감시할 수 있는 수몫과 나머지에 따라 결정된다. 

아래와 같이 3가지가 경우가 존재하고 1번째와 2번째는 나머지가 0이 아닌 것으로 함께 묶어

조건을 2가지로 처리할 수 있다. 

// 몫 = 0 나머지 != 0  cn  = 1; 몫 + 1;

// 몫 != 0 나머지 == 0 나누어 떨어짐 cn = 1; cn = 몫; 

// 몫 != 0 나머지 != 0 cn = 몫 + 1; 

 

풀이

틀렸습니다가 나오는 코드입니다. 참고만 해주세요.

import java.util.Scanner;

public class Main {
	static int N;
	static int[] A;
	static int B, C;
	static int bn, cn;
	static int result = 0;

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		N = scan.nextInt();
		
		A = new int[100001];
		for(int i = 0; i < N; i++) {
			A[i] = scan.nextInt();
		}
		
		B = scan.nextInt(); // 총 감독관 
		C = scan.nextInt(); // 부 감독관 
		
		bn = 1;
		for(int i = 0; i < N; i++) {
			cn = 0;
			int temp = A[i] - B; // 부 감독관이 필요한 수 
			if(temp % C != 0) cn = temp/C + 1;
			else {
				cn = temp/C;
			}

			result += bn + cn;
		}
		
		System.out.println(result);
	}

}

 

참고 

제 풀이가 틀렸는지 확인할 때 참고하였습니다.

언어만 다를 뿐 흐름은 같아 보입니다. ㅜㅜ 흑흑 (나는 왜 틀린걸까)

https://blockdmask.tistory.com/156

 

[백준 13458] 시험 감독

안녕하세요.// 오늘도 어김없이 문제를 풀고온 BlockDMask 입니다. 곧 추석이네요 ㅎㅎ 추석때도 전을 먹으며 일일 일문제 하도록 노력해보겠습니다. 0. 제목 백준 13458 시험 감독 BOJ 13458 시험 감독 1. 문제..

blockdmask.tistory.com