CORE
HOME > JAVA > J2SE > CORE
2019.05.29 / 24:51

[ÀÔÃâ·Â] Scanner¿Í BufferedReaderÀÇ Â÷ÀÌ

Źµ¹ÀÌ°³¹ßÀÚ
Ãßõ ¼ö 299

¸ÕÀú À̹ø ±ÛÀº Scanner¿Í BufferedReader¿¡ ´ëÇØ ³Ê¹« ±íÀº ºÎºÐ±îÁö´Â µé¾î°¡Áö ¾Ê°í ´ÜÁö ¾Ë°í¸®Áò ¿Â¶óÀÎ ÀúÁö »çÀÌÆ®¿¡¼­ ÀԷ½à ¼Óµµ Ãø¸é¿¡¼­ ¾ó¸¶³ª ¸¹ÀÌ Â÷ÀÌ°¡ ³ª´ÂÁö¿¡ ´ëÇØ ¾Ë¾Æº¸°íÀÚ ¾²´Â ±ÛÀÌ´Ù.

¿ì¼± ¿ì¸®´Â ÀϹÝÀûÀ¸·Î ÀÚ¹Ù¿¡¼­ ÀÔ·ÂÀ» ¹ÞÀ¸·Á¸é java.util ÆÐÅ°Áö¿¡ ÀÖ´Â Scanner Ŭ·¡½º¸¦ importÇؿ´Ù. ÀÌ·¸°Ô ´Ü¼øÈ÷ import¸¦ ÇÏ°í Scanner sc = new Scanner(System.in); ó·³ ½áÁÖ´Â°Í ¸¸À¸·Îµµ °£´ÜÈ÷ ½ºÄ³³Ê¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
±×·¯³ª ½ºÄ³³ÊÀÇ °æ¿ì »ç¿ëÇϱâ Æí¸®ÇÏÁö¸¸ ¼Óµµ°¡ ´À¸®´Ù´Â Ä¡¸íÀûÀÎ ´ÜÁ¡ÀÌ ÀÖ´Ù.
°£´ÜÇÑ ¿¹Á¦¸¦ ÅëÇØ ½ºÄ³³ÊÀÇ ¼Óµµ¸¦ Å×½ºÆ®Çغ¸ÀÚ.

¾Æ·¡ÀÇ ÄÚµå´Â Scanner¸¦ ÅëÇØ 1~100¸¸, Áï 100¸¸°³ÀÇ µ¥ÀÌÅ͸¦ ÀԷ¹޴ ÄÚµåÀÌ´Ù.

import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t; sc.nextLine(); long st1 = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ t = sc.nextInt(); } System.out.println("¼Ò¿ä½Ã°£ "+(System.currentTimeMillis() - st1)+"ms"); sc.close(); } }

¼ýÀÚ 100¸¸°³¸¦ ÀԷ¹޴µ¥ °É¸®´Â ½Ã°£Àº ´ÙÀ½°ú °°´Ù.

´ëÃæ 2.5ÃÊ (2441ms)°¡ ¼Ò¿äµÇ¾ú´Ù. 100¸¸°³ ÀԷ¿¡ 2.5Ãʶó°í ³õ°í º¸¸é ºü¸¥°Í °°Áö¸¸ ¾Ë°í¸®Áò »çÀÌÆ®ÀÇ °æ¿ì ÃÖ´ë ÀԷ¹޴ µ¥ÀÌÅÍ°¡ õ¸¸~1¾ï¿¡ À̸£´Â °æ¿ìµµ Á¾Á¾ ÀÖ°í, ¹«¾ùº¸´Ù ´Ù¸¥ ¿¬»ê½Ã°£±îÁö °í·ÁÇϸé Á» °áÄÚ ¶Ù¾î³­ ¼º´ÉÀ̶ó°í ÇÒ ¼ö´Â ¾ø´Ù.



ÀÌÁ¦ BufferedReader¸¦ ÀÌ¿ëÇØ ÀÔ·ÂÀ» ¹Þ¾Æº¸ÀÚ. ¹öÆÛ¸®´õ´Â ÇÑÁÙÀ» Åë°·Î ÀԷ¹޴ ¹æ¹ýÀ¸·Î ÀÌ°ÍÀú°Í ¼±¾ðÇؾßÇÒ °ÍÀÌ ¸¹¾Æ ¹ø°Å·ÓÁö¸¸ ºñ±³Àû ºü¸¦ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù.
´ë·«ÀûÀÎ »ç¿ë ¼³¸íÀ» ÇÏÀÚ¸é ÀÌ·¸´Ù.

import java.io.BufferedReader; import java.io.InputStreamReader; //ÀÌ 2°³ importÇʼö(java.io.*; ·Î ÀüºÎ ¹ÞÀ»¼öµµ ÀÖ´Ù.) public class Main { public static void main(String []args) throws Exception { //¿¹¿Üó¸® Çʼö BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); //ÀԷ¹ÞÀ»°ªÀÌ StringÀ϶§ int a = br.read(); //ÀԷ¹ÞÀ»°ªÀÌ intÀ϶§ int b = Integer.parseInt(br.readLine()); //int°ª+¿£ÅÍ ±îÁö ÀԷ¹ÞÀ»¶§ } }

ÀÌ·±½ÄÀ¸·Î ÀԷ¹ÞÀ» ¼ö Àִµ¥ ¾Ë°í¸®Áò »çÀÌÆ®¿¡¼­ µ¥ÀÌÅ͵éÀº ´ëºÎºÐ
1
2
3
ÀÌ·±½ÄÀ¸·Î ÇÑÁÙ¾¿ ¶ç¿öÁø »óÅ·ΠÀÔ·ÂÀÌ µé¾î¿Â´Ù. 
µû¶ó¼­ int b¸¦ ÀԷ¹ÞÀº ¹æ¹ýó·³ ÀÏ´Ü ½ºÆ®¸µÀ¸·Î °³Ç๮ÀÚ(¿£ÅÍ)±îÁö Æ÷ÇÔÇØ Åë°·Î ¹Þ¾Æ¿Â´ÙÀ½ Çüº¯È¯À» ÅëÇØ ÀúÀåÇÑ´Ù.
¶ÇÇÑ new BufferedReader(new InputStreamReader(System.in), 1024)); ÀÌ·¸°Ô ¹öÆÛ »çÀÌÁ Á÷Á¢ ÁöÁ¤ÇÒ ¼öµµ Àִµ¥ ¾Æ¹«°Íµµ ÁöÁ¤ÇÏÁö ¾ÊÀ»½Ã µðÆúÆ® »çÀÌÁî ¹öÆÛ¸¦ °®´Â´Ù. ¾îÁö°£ÇÑ°Ç µðÆúÆ® »çÀÌÁî·Îµµ ÃæºÐÇß´Ù.

¾Æ¹«Æ° ¹öÆÛ¸®´õ¸¦ ÀÌ¿ëÇØ 100¸¸°³ÀÇ °ªÀ» ÀԷ¹޴ ÄÚµå¿Í °á°ú´Â ¾Æ·¡¿Í °°´Ù.

import java.io.InputStreamReader; import java.io.BufferedReader; public class Main{ public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); in.readLine(); int t; long st2 = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ t = Integer.parseInt(in.readLine()); } System.out.println("¼Ò¿ä½Ã°£ "+(System.currentTimeMillis() - st2)+"ms"); } }

¼Ò¿ä½Ã°£Àº ½ºÄ³³ÊÀÇ 1/6¼öÁØÀÎ ¾à 0.4ÃÊ(452ms)¹Û¿¡ °É¸®Áö ¾Ê¾Ò´Ù. »ç½Ç À§¿¡¼­ ¾ê±âÇß´Ù½ÃÇÇ ¹öÆÛ¸®´õ´Â ÇÑÁÙÀ» Åë°·Î ¹Þ´Â ¹æ½ÄÀ̱⠶§¹®¿¡
1 2 3 4 5 6 7 8 9 10 11 ... 
°ú °°ÀÌ ÇÑÁÙ·Î ÀÔ·ÂÀÌ µé¾î¿Ã¶§ ½ºÄ³³Ê¿¡ ºñÇØ ÈξÀ ¼º´ÉÀÌ ´õ ³ô¾ÆÁø´Ù.

µû¶ó¼­ ¹®Á¦ Á¦Ãâ½Ã ¾Ë°í¸®Áò»ó¿¡ ¹®Á¦°¡ ¾ø´Âµ¥µµ ºÒ±¸ÇÏ°í ½Ã°£ÃÊ°ú°¡ ³­´Ù¸é Scanner¿¡¼­ BufferedReader·Î ¹Ù²ã Á¦ÃâÇغ¸µµ·Ï ÇÏÀÚ.

¹°·Ð ½ºÄ³³Ê¿Í ¹öÆÛ¸®´õ°¡ óÀ½ºÎÅÍ µ¿ÀÏÇÑ ¸ñÀûÀ¸·Î ¸¸µé¾îÁø°Ç ¾Æ´ÏÁö¸¸ äÁ¡»ó ½Ã°£À» ÁÙÀÏ ¼ö ÀÖ´Â ¹æ¹ýÀ̹ǷΠÀûÀýÈ÷ È°¿ëÇϸé Å« È¿°ú¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.