-
[LeetCode] 1768. Merge Strings AlternatelyIT Study/LeetCode 2025. 1. 18. 17:32728x90
코딩 테스트에 대한 감을 잃었다. 차근히 다시 시작해보자.
1. 문제
더보기문제 설명
두 개의 문자열 word1과 word2가 주어졌을 때, 다음 규칙에 따라 문자열을 병합합니다.
- word1과 word2의 문자를 번갈아가며 추가합니다.
- 두 문자열 중 하나가 더 길다면, 남은 문자를 병합 결과 뒤에 추가합니다.
예시
- 입력: word1 = "abc", word2 = "pqr" → 출력: "apbqcr"
- 입력: word1 = "ab", word2 = "pqrs" → 출력: "apbqrs"
실제 문제
You are given two strings word1 and word2. Merge the strings by adding letters in alternating order, starting with word1. If a string is longer than the other, append the additional letters onto the end of the merged string. Return the merged string. Example 1: Input: word1 = "abc", word2 = "pqr" Output: "apbqcr" Example 2: Input: word1 = "ab", word2 = "pqrs" Output: "apbqrs" Example 3: Input: word1 = "abcd", word2 = "pq" Output: "apbqcd" Constraints: 1 <= word1.length, word2.length <= 100 word1 and word2 consist of lowercase English letters.
2. 첫 풀이
더보기해결 방법
문제는 다음과 같이 풀이했다.
- StringBuilder 사용
- 병합된 결과 문자열을 효율적으로 저장하기 위해 사용
- 문자열 추가: append()
- 최종 문자열 반환: toString()
- length 속성으로 문자열 길이 확인
- 각 문자열의 길이를 계산하여 반복문을 설정
- for 반복문으로 번갈아 문자 추가
- minOf()를 사용해 두 문자열의 최소 길이만큼 반복
- 실제 코드에서는 minOf를 통해 두 문자열의 최소 길이를 구하지 않았다.
- if 문을 사용했다 (헤헷)
- 다음엔 minOf로 간단히 구해보도록 하겠다.
- result.append(word1[i]) → word1에서 i번째 문자 추가
- result.append(word2[i]) → word2에서 i번째 문자 추가
- minOf()를 사용해 두 문자열의 최소 길이만큼 반복
- substring으로 남은 문자 추가
- 더 긴 문자열의 나머지 부분을 병합 결과에 추가
실제 코드
class Solution { fun mergeAlternately(word1: String, word2: String): String { var result = StringBuilder() val length1 = word1.length val length2 = word2.length var minLength = 0 var backString = "" if (length1 > length2) { minLength = length2 backString = word1.substring(length2, length1) } else { minLength = length1 backString = word2.substring(length1, length2) } for (i in 0 until minLength) { result.append(word1[i]) result.append(word2[i]) } return result.append(backString).toString() } }
3. 배운 점
더보기주요 개념
그래서 이 문제를 통해 다시 상기시킨 주요 문법은 다음과 같다.
- 문자열 반복 처리
- for (char in text) → 문자열의 각 문자를 순회
- for (i in 0 until m) → 인덱스 기반 순회 (0 ~ m-1)
- 문자열 길이
- text.length → 문자열 길이 반환
- StringBuilder 사용법
- 문자열 추가: builder.append("text")
- 문자 추출: builder[i]
- 최종 문자열: builder.toString()
- 문자열 추출
- text.substring(n, m) → 문자열의 n번째부터 m-1번째까지 추출
실제 메모
1. how to use for 1-1. with String for (char in text) { print(char) } 1-2. for ~ until for (i in 0 until m) { // 0 ~ m-1 } 1-3. for ~ .. for (i in 0..m) { // 0 ~ m } 2. how to get string length text.length 3. add or get String with StringBuilder() val builder = StringBuilder() 3-1. add String builder.append("") 3-2. get Char in String(StringBuilder) builder.substring(i) 3-3. print String with StringBuilder builder.toString() 4. get string of specific digits from string text.substring(n, m + 1) // get string in n ~ m
'IT Study > LeetCode' 카테고리의 다른 글
[LeetCode] 1071. Greatest Common Divisor of Strings (0) 2025.01.19