Java)Codeup 100제[81-100] - 정규표현식,BufferedReader

Jay Kim·2022년 1월 14일
0

Java

목록 보기
8/9

1081.중첩반복문

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n=sc.nextInt();
        int m=sc.nextInt();

        for(int i=1; i<=n; i++){
            for(int j=1; j<=m; j++){
                System.out.println(i+" "+j);
            }
        }
    }

}

1082.16진수끼리의 곱 -> 정규표현식

정규표현식 = 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식

-java.util.regex 패키지 안에 Pattern 클래스와 Matcher 클래스 사용

1)Pattern 클래스

->Pattern.matches(pattern정규표현식, val 매개값) 메소드 사용 -> boolean으로 true면 일치

  • compile(String regex) 메서드 : 주어진 정규표현식으로부터 패턴 생성
    -> Pattern pattern = Pattern.compile( "^[a-zA-Z]*$" ); //영문자만

2)Matcher 클래스

-> 대상 문자열의 패턴 해석 및 주어진 패턴과 일치하는지 판별
Matcher matcher = pattern.matcher(val);
System.out.println(matcher.find()); -> find() 대상 문자열과 패턴 일치하면 true하고 그 위치로 이동
boolean name_check = Pattern.matches( "^[가-힣]*$" , name); -> matches() 대상 문자열과 패턴이 일치하면 true

정규 표현식의미
^[0-9]*$ == \d숫자
^[a-zA-Z]*$알파벳
^[가-힣]*$한글
^[a-zA-Z0-9]알파벳이나 숫자
^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-z]+$이메일(Email)
\w+@\w+.\w+(\.\w+)?이메일(Email)
^01(?:01
import java.util.*;
import java.util.regex.Pattern;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String a= sc.nextLine();

        boolean regex = Pattern.matches("^[A-Z]*$", a);

        if(regex){
            int num= Integer.parseInt(a,16);

            for(int i=1; i<16; i++){
                System.out.format("%X*%X = %X%n", num,i,num*i);
            }
        }
    }
}
  1. 369게임
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        for (int i = 1; i <= n; i++) {
            if (i == 3 || i == 6 || i == 9) {
                System.out.print("X ");
            } else
                System.out.printf(i + " ");
        }
    }

}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int r=sc.nextInt();
        int g=sc.nextInt();
        int b=sc.nextInt();

        int count=0;

        for(int i=0; i<r; i++){
            for(int k=0; k<g; k++){
                for(int c=0; c<b; c++){
                    System.out.println(i+" "+k+" "+c);
                    count++;
                }
            }
        }
        System.out.print(count);
    }

}

1085
1086

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int num =sc.nextInt();
        int sum=0;
        for(int i=1; sum<num; i++){
            sum= sum+i;
        }
        System.out.print(sum);
    }

}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int num =sc.nextInt();

        for(int i=1; i<=num; i++){
            if(i%3!=0) {
                System.out.print(i + " ");
            }
        }

    }

}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int a=sc.nextInt();
        int d=sc.nextInt();
        int n=sc.nextInt();
        int num=0;

        for(int i=0; i<n;i++){
            num =a+i*d;
        }
        System.out.println(num);

    }

}

1090.10 10 10인경우 int단위 넘어가므로 long으로 해야한다.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int a=sc.nextInt();
        int r=sc.nextInt();
        int n=sc.nextInt();

        long result=a;
        for(int i=1; i<n;i++){
            result *=r;
        }
        System.out.println(result);

    }

}

1091.수열

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);

        int a = sc.nextInt();
        int m = sc.nextInt();
        int d = sc.nextInt();
        int n = sc.nextInt();
        long result=a;
        for(int i=1; i<n; i++){
            result= (result*m)+d;
        }
        System.out.println(result);

    }
}

1092.최소공배수

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int day= 1;

        while (day % a != 0 || day % b != 0 || day % c != 0) {
            day++;
        }
        System.out.println(day);

    }
}

1093.1차원 배열

import java.util.*;
import java.lang.*;


public class Main{
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);

        int n = sc.nextInt();   //횟수

        int [] count = new int[24];

        for(int i=0; i<n; i++){
            int num= sc.nextInt();
            count[num -1]+=1;
        }

        for(int i=0; i<23;i++){
            System.out.print(count[i]+" ");
        }
    }
}

1094.1차원 배열 거꾸로 출력

import java.util.*;
import java.lang.*;


public class Main{
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);

        int n = sc.nextInt();   //횟수

        int [] count = new int[n];

        for(int i=0; i<n; i++){
            int num= sc.nextInt();
            count[i]=num;
        }
        System.out.println(count.length);
        for(int i=count.length-1; i>=0;i--){
            System.out.print(count[i]+" ");
        }
    }
}
import java.util.*;
import java.lang.*;


public class Main{
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);

        int n = sc.nextInt();   //횟수

        int [] count = new int[n];

        for(int i=0; i<n; i++){
            int num= sc.nextInt();
            count[i]=num;
        }
        int fast = count[0];
        for(int i=0; i<count.length;i++){
            if(count[i]<fast){
                fast= count[i];
            }
        }
        System.out.println(fast);
    }
}

1096.바둑판 2차원 배열 출력

import java.util.*;
import java.lang.*;


public class Main{
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);

        int n = sc.nextInt();   //횟수

        int  array[][] = new int[19][19];
        int x,y;

        for(int i=0; i<n; i++){
           x=sc.nextInt();
           y=sc.nextInt();

           array[x-1][y-1]=1;
        }

        for(int i=0; i<=array.length-1; i++){
            for(int j=0; j<= array.length-1; j++){
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
    }
}

1097,1098,1099번 문제 -> BufferedReader 이용

-BufferedReader

1) import java.io.*; import 하기
2)

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));	//BufferedReader 선언
String s = bf.readLine();	//String 문자열 받기 (리턴값은 string으로 고정)
int i = Integer.parseInt(bf.readLine());	//다른 타입으로 입력 받으려면 형변환 필수!


3)Main 클래스 옆에 throws IOException을 통해 예외 처리 필수!

<데이터 가공법>
1)StringTokenizer 사용 : 입력 받은 값을 공백 단위로 구분하여 순서대로 호출

StringTokenizer st = new StringTokenizer(br.readLine());	//StringTokenizer 인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken());	//첫번째 호출을 to int로


2)String을 한번에 받아서 split를 이용해 배열로 변환

String s= br.readLine();
String array[] = s.split(" ");	//공백마다 데이터 끊어서 배열에 저장

-BufferedWriter

1) buffer를 잡아 놓았기 때문에 반드시 flush(), close() 호출해서 뒤처리 해야함
2) bw.write()는 줄바꿈 미포함
3)

  BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));	//할당된 버퍼에 값 넣어주기
  String s = "abcdefg";	//출력할 문자열
  bw.write(s+ "\n");	//버퍼에 있는 값 전부 출력
  bw.flush();	//남아있는 데이터를 모두 출력시킴
  bw.close();	//스트림을 닫음

bufferedWriter 예시

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

public class Main{
  public static void main(String[] args) throws IOException{
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

      StringTokenizer st;

      int T = Integer.parseInt(br.readLine());
      for(int i=0; i<T; i++){
          st = new StringTokenizer(br.readLine());
          bw.write((Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken()))+"\n");
      }

      bw.close();

  }
}
입력
5
1 1
12 34
5 500
40 60
1000 1000
--------------
결과
2
46
505
100
2000

0개의 댓글

관련 채용 정보