[알고리즘] 자주 쓰는 자바 문법

정원석·2024년 3월 26일

문자열을 배열에 대입

toCharArray() 메서드 사용하기

"Enter a string" 을 charArray[ ] 배열에 대입

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a string:");
        String input = scanner.nextLine();

        // 문자열을 문자 배열로 변환
        char[] charArray = input.toCharArray();
        
        for (char c : charArray) {
            System.out.print(c + " ");
        }

문자배열arr[ ]의 원소가 a랑 같은가?

if(arr[i]=='a'){
      a++;
  }

공백을 기준으로 배열에 문자열 저장

String[] arr = sc.nextLine().split(" ");

정수를 문자열로 변환

int num = 123;
String str1 = String.valueOf(num);
String str2 = "" + num;

배열의 원소들을 내림차순 정렬

Collections.sort(Arrays.asList(arr));

Arrays.asList(arr) → arr배열을 리스트로 변환
Collections.sort() → 리스트를 내림차순으로 정렬

문자 판별 메서드

대문자

Character.isUpperCase(c) //문자 c가 대문자(A~Z)이면 true, 아니면 false

소문자

Character.isLowerCase(c) //문자 c가 소문자(a~z)이면 true, 아니면 false

숫자

Character.isDigit(c) //문자 c가 숫자(0~9)이면 true, 아니면 false

알파벳

Character.isLetter(c) //문자 c가 알파벳(A~Z또는a~z)이면 true, 아니면 false

에라토스테네스의 체(소수 판별)

boolean[] num = new boolean[1000001];
        num[0] = num[1] = true;
        for (int i = 2; i * i <= 1000000; i++) {
            if (!num[i]) {
                for (int j = i * i; j <= 1000000; j += i) {
                    num[j] = true;
                }
            }
        }

1부터 1000000까지의 수 중에서 소수를 찾는 알고리즘이다. 배열num이 true이면 소수가 아님을, false이면 소수임을 나타낸다.

  • boolean타입 num배열로 1~1000000까지의 수를 기본적으로 false로 초기화 한다. 이 후 num[0]과 num[1]은 true로 설정하여 소수가 아님을 명시힌다.
  • 이중 for문을 사용하여 소수가 아닌 수를 걸러낸다. 바깥쪽 for문은 2부터 시작해 i가 1000000의 제곱근 이하일 때 까지만 반복한다.
  • 바깥쪽 루프에서 num[i]가 false인 경우(i가 소수인 경우), i의 모든 배수를 순회하며 소수가 아니라고 표시한다(true).

결과적으로 num[x]가 false라면 x는 소수이고 true라면 소수가 아니다. 이 방법으로 1~1000000까지의 모든 수에 대한 소수 판별을 효율적으로 할 수 있다.

특정 수(num)가 소수인지 판별

private static boolean isPrime(int num) {
        if(num <= 1)
            return true;
        if(num == 2)
            return false;
        if(num % 2 == 0){
            return true;
        }
        for(int i=3 ; i<Math.sqrt(num) ; i+=2){
            if(num % i == 0){
                return true;
            }
        }
        return false;
    }

num이 false이면 소수, true이면 소수가 아니다.

입력받은 2진수를 8진수로 변환

String S = br.readLine();
        BigInteger N = new BigInteger(S, 2); //문자열S를 2진수로 변환 후 문자열로 저장
        String result = N.toString(8); //N을 8진수 문자열로 변환
        bw.write(result+"\n");

입력받은 수 N을 B진수로 변환

int N = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());

System.out.println(Integer.toString(N,B).toUpperCase());

String형 숫자(20240429)를 int형 배열에 대입

int[] arr = new int[8];
String input = sc.nextLine();
for (int j = 0; j < 8; j++) {
arr[j] = input.charAt(j) - '0';
 }
profile
Back-End-Dev

0개의 댓글