문제

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?

(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?

세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

출력

첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner key = new Scanner(System.in);
		int A = key.nextInt();
		int B = key.nextInt();
		int C = key.nextInt();
		
		System.out.println((A+B)%C);
		System.out.println(((A%C) + (B%C))%C);
		System.out.println((A*B)%C);
		System.out.println(((A%C)*(B%C))%C);
	}
}

나누기 계산 중, 나머지를 구할 때는 %를 사용한다.

문제

정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)

둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

출력

X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.

package JavaTestBackJoon;

import java.util.Scanner;

public class B10871 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int x = sc.nextInt();
		int[] arr = new int[n]; // n의 크기만큼 배열 생성
		for (int i = 0; i < n; i++) {
			arr[i] = sc.nextInt();
			if (x > arr[i]) {
				System.out.print(arr[i]+" ");
			}
		}
	}
}

배열을 하나 더 선언하고 반복문을 하나 더 만들어서, 조건문에 x보다 작은 값이 있을 경우 새로운 배열에 넣고 출력하는 복잡한 방법도 생각했는데 생각이 안 날 때는 잠깐 쉴것 ..

package JavaTestBackJoon;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class B15552 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); // 빠르게 받기
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 빠르게 출력하기
		int t = Integer.parseInt(bf.readLine()); // 몇 번 반복할지 t값 입력 받기
//		System.out.println(t+" 나는t");
		for (int i = 0; i < t; i++) {
			String s = bf.readLine();
			int a = Integer.parseInt(s.split(" ")[0]);
			int b = Integer.parseInt(s.split(" ")[1]);
			bw.write((a+b) + "\n");
		}
		bw.write("\n");
		bw.flush();
	}
}

스캐너보다 더 빠른 입력을 받아야 하고, sysout보다 더 빠른 출력을 해야 하기 때문에 버퍼를 사용해야 한다.

중간에 잘 진행되고 있는지 확인이 필요할 경우 sysout으로 찍어보면 된다 !

+ Recent posts