본문 바로가기

알고리즘 문제 풀이/C#

[C#] Bronze V - 1271. 엄청난 부자2 (Baekjoon)

 

1271. 엄청난 부자2

갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다. 그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다. 프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다. 한 생명체에게 얼마씩 돈을 줄 수 있는가? 또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?

http://www.acmicpc.net

문제 설명

더보기

엄청난 부자2

 

문제

갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다.

그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다.

프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.

한 생명체에게 얼마씩 돈을 줄 수 있는가?

또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?

 

입력

첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수)

 

출력

첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력한다.

 

예제 입력 1

1000 100

 

예제 출력 1

10
0

문제 해설

C# 코드

using System.Numerics;

string input = Console.ReadLine();
string[] valueArray = input.Split(' ', StringSplitOptions.None);

// 문자열로 받기 때문에 길이 상관 X
BigInteger N = BigInteger.Parse(valueArray[0]);
BigInteger M = BigInteger.Parse(valueArray[1]);

BigInteger divided = N / M;
BigInteger remained = N % M;

Console.WriteLine(divided);
Console.WriteLine(remained);

 

C# 코드 해

  1. 값을 입력을 받고 " "(공백)을 기준으로 나눠서 값을 할당하기 위해 Split()를 사용해 배열에 일단 저장해 둠.
  2. 값의 범위가 10의 1000승이기 때문에 그 어떤 자료형을 쓰더라도 모자름...
  3. 그래서 입력을 받은 값을 "문자열" 형태로 바꾸기 위해서 BigInteger라는 클래스를 사용함. (문자열의 형태로 받아오기 때문에 값의 한계가 없음.)
  4. 아무튼 BigInteger의 형태로 입력을 받은 다음 n과 m에 할당함.
  5. 첫 째줄에 n과 m의 값을 나눈 값을, 둘 째줄에 n을 m로 나눈 나머지 값을 출력함.