-
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"
- StringBuilder나 StringBuffer는 문자열을 효율적으로 결합하는 데 사용됩니다. 여러 번 문자열을 결합할 때 성능 이점이 있습니다.
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. 문자열 압축/압축 해제
- StringBuilder나 StringBuffer를 사용하여 효율적인 문자열 조작을 할 수 있습니다.
- 자주 문자열을 수정하거나 결합해야 할 때 사용합니다.
- 예시문제
더보기문제 설명:
주어진 문자열을 압축하시오.
문자열에서 같은 문자가 연속으로 나오는 경우 그 문자를 해당 횟수만큼 압축하여 출력하시오.입력:
"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"출력:
truepublic 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"출력:
6public 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
'알고리즘 > 문자열' 카테고리의 다른 글
버퍼 VS 빌더 VS String _ 코딩 테스트(개념편 java) (1) 2025.01.22