LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "Defanging an IP Address" 문제입니다.
--> https://leetcode.com/problems/defanging-an-ip-address/description/
문제 :
Given a valid (IPv4) IP address, return a defanged version of that IP address.
A defanged IP address replaces every period "." with "[.]".
Example 1 :
Input : address = "1.1.1.1"
Output : "1[.]1[.]1[.]1"
Example 2 :
Input : address = "255.100.50.0"
Output : "255[.]100[.]50[.]0"
Constraints : The given address is a valid IPv4 address.
이 문제는 되게 간단합니다. 주어진 유효한 IPv4 주소의 모든 마침표 .를 [.]로 변환하는 함수를 구현하면 됩니다.
class Solution {
public String defangIPaddr(String address) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < address.length(); i++) {
if (address.charAt(i) == '.') {
sb.append("[.]");
} else {
sb.append(address.charAt(i));
}
}
return sb.toString();
}
}
저는 이를 StringBuilder를 활용하여 코드를 썼습니다.
반복문 하나 돌려서 순회하면서, 만약에 address의 char이 . 이면 StrinBuilder 인 sb에 . 대신 [.]를 추가하는 코드입니다. (아닐 경우에는 원래 char를 추가하고요).
이번 문제 같은 경우에는 정말로 쉽고 썡초보 분들께도 추천드립니다. String, for, if 의 개념들을 한 번에 쓰게 되니까 복습용으로도 좋아 보입니다.
- 시간 복잡도 : O(n)
- 입력 문자열 address의 길이를 n이라고 할 때, 각 문자를 한 번씩 순회하여 확인하고 StringBuilder에 추가합니다.
- 따라서, 전체 시간 복잡도는 O(n)입니다.
공간 복잡도
- 공간 복잡도 : O(n)
- StringBuilder는 입력 문자열의 각 문자와 대체된 [.] 문자열을 저장하므로, 최악의 경우 공간 복잡도는 O(n)입니다.
- 여기서 n은 입력 문자열의 길이입니다.
- 추가적으로, 반환되는 최종 문자열도 O(n)의 공간을 차지합니다.
'LeetCode' 카테고리의 다른 글
[LeetCode] - 1089. Duplicate Zeros (0) | 2024.07.30 |
---|---|
[LeetCode] - 1051. Height Checker (0) | 2024.07.30 |
[LeetCode] - 724. Find Pivot Index (0) | 2024.07.29 |
[LeetCode] - 1281. Subtract the Product and Sum of Digits of an Integer (0) | 2024.07.29 |
[LeetCode] - 706. Design HashMap (0) | 2024.07.29 |