ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • java 코딩 테스트 _ 자주 나오는 문자열 개념 정리
    알고리즘/문자열 2025. 1. 21. 18:24

    ▤ 목차

       

      저는 java로 지원할 예정이기에 문제 풀이 언어는 java입니다.

       


      🔸자주 나오는 개념 정리

      1. 문자열 길이 (String Length)

      • 문자열의 길이를 구할 때 length() 메서드를 사용합니다.
      String str = "hello";
      int length = str.length(); // length = 5

       

       

       


      2. 문자 접근 (Character Access)

      • 문자열 내 특정 문자를 가져올 때 charAt() 메서드를 사용합니다. 인덱스는 0부터 시작합니다.
      char ch = str.charAt(0); // 'h' (첫 번째 문자)

       

       


      3. 문자열 비교 (String Comparison)

      • 두 문자열을 비교할 때는 == 대신 equals() 메서드를 사용합니다. ==는 참조 비교이고, equals()는 값 비교입니다.
         
      String str1 = "hello";
      String str2 = "hello";
      System.out.println(str1.equals(str2));  // true

       

       

      • 대소문자를 구분하지 않고 비교하려면 equalsIgnoreCase()를 사용할 수 있습니다.
      System.out.println(str1.equalsIgnoreCase("HELLO"));  // true

       


      4. 문자열 자르기 (Substring)

      • substring() 메서드를 사용하면 문자열의 일부를 잘라낼 수 있습니다.
      • 시작 인덱스는 포함되고, 끝 인덱스는 포함되지 않습니다.
      String str = "hello";
      String sub = str.substring(1, 4);  // "ell" (1번 인덱스부터 3번 인덱스까지)

      5. 문자열 결합 (Concatenation)

      • 두 문자열을 결합할 때 + 연산자나 concat() 메서드를 사용할 수 있습니다.
      String str1 = "hello";
      String str2 = "world";
      String result = str1 + " " + str2;  // "hello world"

       

      • StringBuilderStringBuffer는 문자열을 효율적으로 결합하는 데 사용됩니다. 여러 번 문자열을 결합할 때 성능 이점이 있습니다.
      StringBuilder sb = new StringBuilder();
      sb.append("hello").append(" ").append("world");
      String result = sb.toString();  // "hello world"

       

      + append(Object obj) 메서드는 obj의 문자열을 StringBuilder 객체 끝에 추가하는 메서드이다.


      6. 문자열 분할 (Split)

      • split() 메서드를 사용하면 문자열을 특정 구분자로 나눠 배열로 반환할 수 있습니다.
      String str = "apple,banana,cherry";
      String[] fruits = str.split(",");  // ["apple", "banana", "cherry"]

      7. 대소문자 변환 (Case Conversion)

      • 문자열의 모든 문자를 소문자나 대문자로 변환할 때 toLowerCase()toUpperCase()를 사용합니다.
      String str = "Hello";
      String lower = str.toLowerCase();  // "hello"
      String upper = str.toUpperCase();  // "HELLO"

      8. 문자열 포함 여부 확인 (Contains, IndexOf)

      • contains() 메서드를 사용하여 문자열이 다른 문자열을 포함하는지 확인할 수 있습니다.
      String str = "hello world";
      System.out.println(str.contains("world"));  // true
      • indexOf()는 특정 문자의 인덱스를 반환합니다. 문자가 없으면 -1을 반환합니다.
      int index = str.indexOf("world");  // 6

       

      + 문자열에서 특정 문자나 부분 문자열이 처음 등장하는 인덱스(위치)를 반환하는 메서드이다.

       

       


      9. 문자열 교체 (Replace)

      • replace() 메서드를 사용하면 문자열 내에서 특정 부분을 다른 문자열로 바꿀 수 있습니다.
      • replaceAll()은 정규식을 사용하여 문자열을 교체할 때 사용합니다.
      String str = "hello world";
      String newStr = str.replace("world", "java");  // "hello java"

      10. 문자열 앞뒤 공백 제거 (Trim)

      • trim() 메서드를 사용하면 문자열 앞뒤의 공백을 제거할 수 있습니다.
         
      String str = "  hello world  ";
      String trimmed = str.trim();  // "hello world"

      11. 정규 표현식 (Regular Expressions)

      • 정규 표현식을 사용하면 문자열에서 패턴을 검색하고, 교체하거나, 검증할 수 있습니다. 예를 들어, matches(), replaceAll(), split() 메서드에서 정규식을 활용할 수 있습니다.
         
      String str = "hello123";
      System.out.println(str.matches("[a-z]+[0-9]+"));  // true

      12. 문자열 형식화 (String Formatting)

      • 문자열 내에서 변수를 삽입할 때 String.format() 또는 printf()를 사용할 수 있습니다.
         
         
      String name = "Alice";
      int age = 25;
      String formatted = String.format("Name: %s, Age: %d", name, age);  // "Name: Alice, Age: 25"

      13. 문자열을 배열로 변환 (toCharArray)

      • 문자열을 문자 배열로 변환할 때 toCharArray()를 사용할 수 있습니다.
         
      String str = "hello";
      char[] chars = str.toCharArray();  // ['h', 'e', 'l', 'l', 'o']

      14. 배열을 문자열로 변환 (Array to String)

      • 문자열 배열을 하나의 문자열로 합칠 때 String.join()을 사용할 수 있습니다.
      String[] words = {"hello", "world"};
      String result = String.join(" ", words);  // "hello world"

      15. 문자열 압축/압축 해제

      • StringBuilderStringBuffer를 사용하여 효율적인 문자열 조작을 할 수 있습니다.
      • 자주 문자열을 수정하거나 결합해야 할 때 사용합니다.
      • 예시문제
      더보기

      문제 설명:
      주어진 문자열을 압축하시오.
      문자열에서 같은 문자가 연속으로 나오는 경우 그 문자를 해당 횟수만큼 압축하여 출력하시오.

      입력:
      "aaabbbcccc"

      출력:
      "a3b3c4"

       

      public class Solution {
          public static void main(String[] args) {
              String str = "aaabbbcccc";
              StringBuilder compressed = new StringBuilder();
      
              int count = 1;
              for (int i = 1; i < str.length(); i++) {
                  if (str.charAt(i) == str.charAt(i - 1)) {
                      count++;
                  } else {
                      compressed.append(str.charAt(i - 1)).append(count);
                      count = 1;
                  }
              }
              compressed.append(str.charAt(str.length() - 1)).append(count);
      
              System.out.println(compressed.toString());
          }
      }

      16. 문자열의 반복 (Repeat)

      • Java 11 이상에서는 repeat() 메서드를 사용하여 문자열을 반복할 수 있습니다.
      String str = "hello";
      String repeated = str.repeat(3);  // "hellohellohello"

      17. 가장 긴 공통 부분 문자열 (Longest Common Substring)

      • 두 문자열에서 가장 긴 공통 부분 문자열을 찾는 문제에서는 동적 계획법(DP)을 사용할 수 있습니다.
      • 예시 문제
      더보기

      문제 설명:
      두 문자열이 주어질 때, 두 문자열에서 가장 긴 공통 부분 문자열을 찾아 출력하시오.

      입력:
      "abcdefg"
      "zabxy"

      출력:
      "ab"

      public class Solution {
          public static void main(String[] args) {
              String s1 = "abcdefg";
              String s2 = "zabxy";
      
              int maxLength = 0;
              int endIndex = 0;
              int[][] dp = new int[s1.length() + 1][s2.length() + 1];
      
              for (int i = 1; i <= s1.length(); i++) {
                  for (int j = 1; j <= s2.length(); j++) {
                      if (s1.charAt(i - 1) == s2.charAt(j - 1)) {
                          dp[i][j] = dp[i - 1][j - 1] + 1;
                          if (dp[i][j] > maxLength) {
                              maxLength = dp[i][j];
                              endIndex = i;
                          }
                      }
                  }
              }
              System.out.println(s1.substring(endIndex - maxLength, endIndex));
          }
      }

      18. 문자열 회전 (String Rotation)

      • 문자열이 특정 문자로 회전하는 문제에서 문자열을 잘라서 합치는 방법을 사용할 수 있습니다.
      • 예: "abc"를 왼쪽으로 한 번 회전하면 "bca"가 됩니다.
      • 예시 문제
      더보기

      문제 설명:
      주어진 문자열이 특정 문자로 회전했을 때 원래 문자열과 같은지 확인하는 프로그램을 작성하시오.

      입력:
      "abc", "bca"

      출력:
      true

       

      public class Solution {
          public static void main(String[] args) {
              String original = "abc";
              String rotated = "bca";
      
              if (original.length() == rotated.length() && (original + original).contains(rotated)) {
                  System.out.println(true);
              } else {
                  System.out.println(false);
              }
          }
      }

      19. 부분 문자열 찾기 (Substring Search)

      • indexOf() 또는 lastIndexOf()를 활용하여 문자열 내에서 특정 부분 문자열을 찾을 수 있습니다.
      • 예시문제
      더보기

      문제 설명:
      주어진 문자열 내에서 특정 부분 문자열이 존재하는지 확인하시오. indexOf() 또는 lastIndexOf()를 사용하여 부분 문자열을 찾습니다.

      입력:
      "hello world", "world"

      출력:
      6

      public class Solution {
          public static void main(String[] args) {
              String text = "hello world";
              String subString = "world";
              
              int index = text.indexOf(subString);
              System.out.println(index);
          }
      }

      20. 문자열을 정수로 변환 (Parsing)

      • 문자열을 숫자나 다른 타입으로 변환할 때 Integer.parseInt(), Double.parseDouble() 등을 사용합니다.
         
      String str = "123";
      int num = Integer.parseInt(str);  // 123

       

       

       

       

    Designed by Tistory.