ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [알고리즘/JAVA] 문법 정리
    Algorithm 2024. 9. 18. 22:08

     

     

    - 문자열 관련 

    String str = "abcde";
    
    str.charAt(2) // 인덱스로 문자 찾기, c 반환
    str.equals("abcde"); // str과 abcde를 비교해서 같으면 true, 다르면 false

     

     

    - String.format

    문자열 형식 설정할 때 사용

    // 문자열 소수점 4째자리까지 형태일 때
    String.format("%s %.4f%n", s, percentage);

     

    // 시분초 HHMMSS 형식으로 포맷 (EX) 11시 01분 00초)
    for(int h = 0; h <= N; h++) { // 시
                for(int m = 0; m <= 59; m++) { // 분
                    for(int s = 0; s <= 59; s++) { // 초
                       // 현재 시각을 HHMMSS 형식으로 포맷
                        String time = String.format("%02d%02d%02d", h, m, s);
    
                        if(time.contains(K)) {
                            count++;
                        }
                    }
                }
            }

     

    - String과 StringBuilder의 차이 ??
    • StringBuilder는 가변 객체이므로, 기존 객체를 그대로 사용하여 문자열을 수정할 수 있습니다.
    • 문자열을 추가하거나 삭제하는 작업이 반복될 때마다 새로운 객체를 생성하지 않기 때문에, 성능이 뛰어나고 메모리 효율이 높습니다.
    • 문자열을 반복적으로 수정하는 상황에서는 항상 String보다 StringBuilder가 더 효율적입니다.

    StringBuilder sb = new StringBuilder();
    sb.append("abc") // 문자열 추가
    // 문자열로 변환
    sb.toString();

     


     

     

    - StringTokenizer

    공백(구분자)를 기준으로 문자열을 나눠준다.

    StringTokenizer st = new StringTokenizer(br.readLine());
    
    
    StringTokenizer.countTokens() // 현재 가지고있는 토큰의 개수를 반환

     

     

     


     

    - 숫자 -> 문자열 변환

    String.valueOf();
    Integer.toString();
    Long.toString();

     

     

    - 숫자 변환

    Integer.parseInt();
    Long.parseLong();

     

    - 정렬 관련 함수

    Arrays.sort()는 1차원 배열에만 사용 가능하다

     
    ArrayList<String> list = new ArrayList<>();
    Collections.sort(list);
    
    -- 역순 정렬 관련
    String[] str = Long.toString(n).split("");
    Arrays.sort(str, Collections.reverseOrder());

     


    - ArrayList 관련

    ArrayList<String> list = new ArrayList<>();
    list.get(0); // 0 위치의 값 반환

     


     

    - Stack 관련

    Stack<Integer> stack = new Stack<>();
    stack.push(1); // stack에 1 삽입
    stack.pop(); // 가장 위에 있는 값 삭제
    stack.size(); // 크기 반환
    stack.empty() // 비어있으면 true, 아니면 false
    stack.peek() // 가장 위에 있는 값 출력 (제거 X), 비어있으면 null 반환

    - Queue 관련

    Queue<Integer> queue = new LinkedList<>();
    
    queue.add(1); // 큐에 1추가
    queue.size(); // 큐 사이즈
    queue.poll(); // 큐의 첫번째 값 반환(제거o)
    queue.peek(); // 큐의 첫번째 값 출력(제거x)
    queue.isEmpty(); // 비어있으면 true , 안 비어있으면 false

     

    - PriorityQueue 우선순위 큐

    우선순위 큐에 있는 원소들은 최솟값만 보장될 뿐 나머지 원소들이 순서대로 정렬되지는 않을 수 있다!

    PriorityQueue<Integer> pq = new PriorityQueue<>();
    pq.add(1); // pq.offer(1);과 동일
    pq.poll(); // 최솟값 제거

     

    높은 수가 우선이 되게 할 때는 아래와 같이 사용 

     // Collections.reverseOrder() 써서 높은 수가 우선이 되게
     PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());

     

    - 가장 큰 수 / 가장 작은 수

    int max = Integer.MAX_VALUE;
    int min = Integer.MIN_VALUE;

    - HashMap

    HashMap<Integer, String> hm = new HashMap<>();
    hm.put(1, "안녕"); // 값 삽입
    hm.get(1); // "안녕" 출력
    hm.containsKey(1); // true
    hm.containsValue("안녕"); // true

     

    - TreeMap

    키값이 알파벳순(오름차순)으로 정렬된 상태로 출력

    TreeMap<String, Integer> tm = new TreeMap<>();

     

    - getOrDefault()

    // getOrDefault 메소드 이용해 name이 한번 더 나오면 +1 아니면 기본값 0 삽입
    tm.put(name, tm.getOrDefault(name, 0)+1);

     

     

    - Entry

     키, 값 둘 다 출력 필요할 때는 Entry 사용

            for(Map.Entry<String, Integer> entry : tm.entrySet()) {
                String s = entry.getKey();
                int num = entry.getValue();
            }

    - 문자가 숫자인지 확인하는 함수

    Character.isDigit('a'); // false
    Character.isDigit('1'); // true

     

     

Designed by Tistory.