101010101011 0으로. | 연산자 // |연산자 ( or ) int a = 7; int b = 15; int c = a | b; a : 0111 b : 1111 ----or연산----- c : 1111 or 연산이라고 생각하면 된다. 둘중 하나라도 1이면 1이다. ( 1 or 0 = 1, 0 or 1 = 1 ) &연산자 // &연산자(and) int a = 7; int b = 15; int c = a&b; a : 0111 b : 1111 ----&연산------ c : 0111 and 연산이다. 둘 다 1이면 결과값이 1이다. ( 1 and 0 = 0 , 1 and 1 = 1) ^연산자 // ^연산자( XOR ) int a = 7; int b = 15; int c = a ^ b; a : 0111..
정규표현식을 안까먹기위해서 정리해본다. 정규표현식을 알면 코드가 간결해지고 , 엄청난 시간을 단축시킬수 있으므로 공부해보자. 예를 들어, replaceAll으로 들어봤다. []은 문자,숫자의 집합을 나타내고, 문자,숫자 사이에는 - 로 범위를 나타낸다. 만약 [] 안에 ^가 들어가면 제외한다는 의미이다. String pn = "a123b456c789"; String str = pn.replaceAll("[0-9]", ""); // 0부터9까지 숫자를 공백("")으로 표현 -> abc String str = pn.replaceAll("[^0-9]", ""); // 0부터9까지를 제외한 나머지를 공백("")으로 표현 -> 123456789 [자주 쓰이는 패턴] 숫자만 ^[0-9]*$ 영문자만 ^[a-zA-Z..
만약, scanner로 input을 받다가 "q"를 입력받으면 종료되게 하려고 한다. 그러면 코드를 아래처럼 짜야한다. Scanner sc = new Scanner(System.in); String input = sc.nextLine(); if( input.equals("q") || input.equals("Q") ){ break; } 이렇게 q , Q 두가지 상황을 생각해줘야한다. 근데 equalsIgnoreCase를 사용하면, q와Q를 구분하지않는다. Scanner sc = new Scanner(System.in); String input = sc.nextLine(); if( input.equalsIgnoreCase("q") ){ break; } 이렇게 하면, 좀 더 실행속도를 줄일 수 있게 된다. ..
최대공약수, 최소공배수 구하기 알고리즘 1. 반복문 돌리기 int a = 12, b = 3; int gcd = 0 , lcm = 0; int r = 1; //최대공약수 구하는 메소드 int gcd( int a , int b ){ while( r > 0 ){ r = a % b; a = b; b = r; } return a; } gcd = gcd(a , b); lcm = (a * b) / gcd; 2. 재귀 함수 사용 int a = 12, b = 3; int gcd = 0, lcm = 0; //반복문처럼 도는 재귀함수. int makeGCD( int a, int b){ if( b == 0){ return a; } else { return gcd( b, a%b ); } } gcd = makeGCD(a , b)..