알고리즘/문자열

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