CodingTest/Baekjoon

[baekjoon] 백준 3107번(파이썬): IPv6

JunJangE 2022. 5. 18. 15:48

문제

 

3107번: IPv6

첫째 줄에 올바른 IPv6 주소가 주어진다. 이 주소는 최대 39글자이다. 또한, 주소는 숫자 0-9, 알파벳 소문자 a-f, 콜론 :으로만 이루어져 있다.

www.acmicpc.net

알고리즘

- 반복문을 통해 각 그룹을 확인한다.

- 0으로만 이루어진 그룹이 있다면 idx에 저장한다.

- 0으로만 이루어지지 않은 그룹은 0을 추가한다.

- 0으로만 이루어진 그룹은 반복문을 통해 IPv6의 길이가 8이 될 때까지 "0000"을 추가한다. 

코드

import sys

IPv6 = list(map(str, sys.stdin.readline().strip("\n").split(":")))
idx = []

# 반복문을 통해 각 그룹을 확인
for i in range(len(IPv6)):

    # 0으로만 이루어진 그룹의 idx 저장
    if len(IPv6[i]) == 0:
        idx.append(i)
        continue

    # 0으로 이루어지지 않은 그룹의 0을 추가
    if len(IPv6[i]) < 4:
        IPv6[i] = "0" * (4 - len(IPv6[i])) + IPv6[i]

# 0으로만 이루어진 그룹이 있다면
if idx:

    # 반복문을 통해 IPv6 공백을 제거
    for _ in idx:
        del IPv6[idx[0]]

    # IPv6의 길이가 8이 될 때까지 0으로만 이루어진 그룹에 "0000"을 추가
    while len(IPv6) != 8:
        IPv6.insert(idx[0], "0000")


print(":".join(IPv6))

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com