[Java] 알고리즘 PS에 적용할만한 짱짱빠른 I/O

    초심자들에겐 Scanner/System.out.println, 조금 더 나아가면 BufferedReader/Writer를 많이 쓰실 것입니다.

    실제로 백준, 삼성 코딩테스트 수준에선 BufferedReader/Writer로 충분합니다만,

    백준에서 풀이 시간을 적은 노력으로 단축하고자 한다면 아래 링크를 참조하시기 바랍니다.

     

    https://www.geeksforgeeks.org/fast-io-in-java-in-competitive-programming/?ref=rp 

     

    Fast I/O in Java in Competitive Programming - GeeksforGeeks

    A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

    www.geeksforgeeks.org

    // Working program using Reader Class
    import java.io.DataInputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    import java.util.StringTokenizer;
    
    public class Main {
    	static class Reader {
    		final private int BUFFER_SIZE = 1 << 16;
    		private DataInputStream din;
    		private byte[] buffer;
    		private int bufferPointer, bytesRead;
    
    		public Reader()
    		{
    			din = new DataInputStream(System.in);
    			buffer = new byte[BUFFER_SIZE];
    			bufferPointer = bytesRead = 0;
    		}
    
    		public Reader(String file_name) throws IOException
    		{
    			din = new DataInputStream(
    				new FileInputStream(file_name));
    			buffer = new byte[BUFFER_SIZE];
    			bufferPointer = bytesRead = 0;
    		}
    
    		public String readLine() throws IOException
    		{
    			byte[] buf = new byte[64]; // line length
    			int cnt = 0, c;
    			while ((c = read()) != -1) {
    				if (c == '\n') {
    					if (cnt != 0) {
    						break;
    					}
    					else {
    						continue;
    					}
    				}
    				buf[cnt++] = (byte)c;
    			}
    			return new String(buf, 0, cnt);
    		}
    
    		public int nextInt() throws IOException
    		{
    			int ret = 0;
    			byte c = read();
    			while (c <= ' ') {
    				c = read();
    			}
    			boolean neg = (c == '-');
    			if (neg)
    				c = read();
    			do {
    				ret = ret * 10 + c - '0';
    			} while ((c = read()) >= '0' && c <= '9');
    
    			if (neg)
    				return -ret;
    			return ret;
    		}
    
    		public long nextLong() throws IOException
    		{
    			long ret = 0;
    			byte c = read();
    			while (c <= ' ')
    				c = read();
    			boolean neg = (c == '-');
    			if (neg)
    				c = read();
    			do {
    				ret = ret * 10 + c - '0';
    			} while ((c = read()) >= '0' && c <= '9');
    			if (neg)
    				return -ret;
    			return ret;
    		}
    
    		public double nextDouble() throws IOException
    		{
    			double ret = 0, div = 1;
    			byte c = read();
    			while (c <= ' ')
    				c = read();
    			boolean neg = (c == '-');
    			if (neg)
    				c = read();
    
    			do {
    				ret = ret * 10 + c - '0';
    			} while ((c = read()) >= '0' && c <= '9');
    
    			if (c == '.') {
    				while ((c = read()) >= '0' && c <= '9') {
    					ret += (c - '0') / (div *= 10);
    				}
    			}
    
    			if (neg)
    				return -ret;
    			return ret;
    		}
    
    		private void fillBuffer() throws IOException
    		{
    			bytesRead = din.read(buffer, bufferPointer = 0,
    								BUFFER_SIZE);
    			if (bytesRead == -1)
    				buffer[0] = -1;
    		}
    
    		private byte read() throws IOException
    		{
    			if (bufferPointer == bytesRead)
    				fillBuffer();
    			return buffer[bufferPointer++];
    		}
    
    		public void close() throws IOException
    		{
    			if (din == null)
    				return;
    			din.close();
    		}
    	}
    
    	public static void main(String[] args)
    		throws IOException
    	{
    		Reader s = new Reader();
    		int n = s.nextInt();
    		int k = s.nextInt();
    		int count = 0;
    		while (n-- > 0) {
    			int x = s.nextInt();
    			if (x % k == 0)
    				count++;
    		}
    		System.out.println(count);
    	}
    }

    'IT > Algorithm' 카테고리의 다른 글

    [BOJ 9375] 패션왕 신해빈  (0) 2021.03.04
    [BOJ 1092] 배  (0) 2021.03.04
    [BOJ 17839] Baba is Rabbit  (0) 2021.03.04
    [BJ 3344] N-Queens  (0) 2021.02.24
    [BJ 18768] 팀 배정  (0) 2021.02.23

    댓글