본문 바로가기

LeetCode

[LeetCode] - 1108. Defanging an IP Address

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)의 공간을 차지합니다.

Runtime 결과