프로그래머스 - 코딩 기초 트레이닝
14) Lv0.ad 제거하기
문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
1 ≤ strArr의 길이 ≤ 1,000
1 ≤ strArr의 원소의 길이 ≤ 20
strArr의 원소는 알파벳 소문자로 이루어진 문자열입니다.
strArr result
["and","notad","abcd"]["and","abcd"]
["there","are","no","a","ds"]["there","are","no","a","ds"]
- 입출력 예 #1
1번 인덱스의 문자열인 "notad"는 부분 문자열로 "ad"를 가집니다. 따라서 해당 문자열을 제거하고 나머지는 순서를 유지하여 ["and","abcd"]를 return 합니다.- 입출력 예 #2
"ad"가 부분 문자열로 들어간 문자열이 존재하지 않습니다. 따라서 원래 배열을 그대로 return 합니다.
func solution(strArr []string) []string {
findStr := "ad"
for i := 0; i < len(strArr); i++ {
//2.해당 문자("ad")가 포함되어 있는지 확인한다.
if strings.Contains(strArr[i], findStr) == true {
//3.해당되는 요소의 인덱스 번호 저장
index := i
//4. 슬라이싱을 사용하여 요소 앞 뒤의 슬라이스를 결합한다.
strArr = append(strArr[:index], strArr[index+1:]...)
}
}
return strArr
}
}
하지만, 위의 내용으로 채점하면 틀린다..
func solution(strArr []string) []string {
findStr := "ad"
var result []string
for i := 0; i < len(strArr); {
// Check whether the corresponding string contains the substring "ad"
if strings.Contains(strArr[i], findStr) {
// If it contains "ad", remove it from the slice
strArr = append(strArr[:i], strArr[i+1:]...)
} else {
// If it doesn't contain "ad", add it to the result slice and move to the next index
result = append(result, strArr[i])
i++
}
}
fmt.Println("result: ", result)
return result
}
import "strings"
func solution(strArr []string) []string {
answer := []string{}
for _, s := range strArr {
if !strings.Contains(s, "ad") {
answer = append(answer, s)
}
}
return answer
}
1.strings 문자열 조작 함수를 알고 있는가? strings.Contains()
2.슬라이싱을 이해하고 있는가?
1.Y
2.Y