문제
경상북도 특산품인 사과를 학생들에게 나눠주기 위해 여러 학교에 사과를 배정하였다. 배정된 사과 개수는 학교마다 다를 수 있고, 학생 수도 학교마다 다를 수 있다. 각 학교에서는 배정된 사과를 모든 학생들에게 똑같이 나눠주되, 남는 사과의 개수를 최소로 하려고 한다. (서로 다른 학교에 속한 학생이 받는 사과 개수는 다를 수 있다.)
예를 들어, 5개 학교의 학생 수와 배정된 사과 수가 다음과 같다고 하자.
학교 | A | B | C | D | E |
---|---|---|---|---|---|
학생 수 | 24 | 13 | 5 | 23 | 7 |
사과 개수 | 52 | 22 | 53 | 10 | 70 |
A 학교에서는 모든 학생에게 사과를 두 개씩 나눠주고 4개의 사과가 남게 된다. B 학교에서는 모든 학생에게 사과를 한 개씩 나눠주고 9개의 사과가 남게 된다. 비슷하게 C 학교에서는 3개의 사과가, D 학교에서는 10개의 사과가, E 학교에서는 0개의 사과가 남게 되어, 남는 사과의 총 수는 4+9+3+10+0 = 26이다.
각 학교의 학생 수와 사과 개수가 주어졌을 때, 학생들에게 나눠주고 남는 사과의 총 개수를 구하는 프로그램을 작성하시오.
입력
첫 번째 줄에는 학교의 수를 나타내는 정수 N (1 ≤ N ≤ 100)이 주어진다. 다음 N 개의 줄에 각 학교의 학생 수와 배정된 사과 개수를 나타내는 두 개의 정수가 주어진다. 학생 수와 사과 개수는 모두 1이상 100이하이다.
출력
남은 사과의 총 개수를 나타내는 정수를 출력한다.
풀이
사과를 나누어 주는 행위를 나머지 연산을 이용하여 연산한다.
나머지 연산을 이용하게 되면 A/B일 경우 몫 M과 나머지 N으로 결과가 나오게 되는데
몫은 신경 쓰지 않고 최대로 나누어주고 남은 나머지만 연산하기에 이 문제에서 원하는 결과를 출력 할 수 있다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt(), ans=0;
for(int i=0;i<n;i++) {
int st=sc.nextInt(), ap=sc.nextInt();
ans+=ap%st;
}
System.out.println(ans);
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 2693 N번째 큰 수 JAVA (0) | 2022.08.03 |
---|---|
Baekjoon 1495 기타리스트 JAVA (0) | 2022.08.02 |
Baekjoon 10799 쇠막대기 JAVA (0) | 2022.08.01 |
Baekjoon 1252 이진수 덧셈 JAVA (0) | 2022.07.24 |
Baekjoon 2470 두 용액 JAVA (0) | 2022.07.24 |
댓글