🧩 문제 : 3107 IPv6
👩🏻💻 문제 정리
! 해당 규칙을 토대로 축약된 IPv6 주소를 축약되기 전의 형태로 바꾸어 출력하는 문제 !
💪🏻 풀이 과정
📍 해결 방법
1. 입력받은 문자열을 ':'으로 split하여 저장한다.
1-1 ) 맨 앞과 맨 뒤에 ::가 있던 경우 ''가 두 개이상 저장되므로 이를 방지하기 위해 if문으로 처리해주었다.
2. 그룹의 개수인 8만큼 반복문을 수행한다.
2-1) 리스트 속 문자열이 ''이라면 ''를 지우고 IPv6의 length가 8이 될 때까지 '0000'으로 채운다.
2-2) 빈 문자열이 아닌데 그룹의 길이가 4가 아니라면 zfill 함수를 통해 0으로 채워준다.
3. 형식에 맞게 출력 !
💻 전체 코드
import sys
# 입력
IPv6 = list(map(str, sys.stdin.readline().rstrip().split(":")))
# 맨앞/맨뒤에 ::이 존재하는 경우
if IPv6[0] == '':
IPv6 = IPv6[1:]
if IPv6[-1] == '':
IPv6 = IPv6[:-1]
# 반복문을 그룹의 총 개수인 8번 수행합니다.
for i in range(8):
# ''를 가지고 있다면 remove 해주고 부족한 자릿수만큼 0000을 insert 합니다.
if IPv6[i] == '':
IPv6.remove('')
for _ in range(8 - len(IPv6)):
IPv6.insert(i, '0000')
# 빈 문자열도 아니고, 길이가 4가 아니라면 0으로 채워줍니다.
else:
if len(IPv6[i]) != 4:
IPv6[i] = IPv6[i].zfill(4)
print(':'.join(IPv6))
💭 결과
'알고리즘' 카테고리의 다른 글
[BOJ / Python] 15486 퇴사 2 (0) | 2023.02.13 |
---|---|
[BOJ / Python] 2022 사다리 (0) | 2023.02.09 |
[BOJ / Python] 25603 짱해커 이동식 (0) | 2023.02.07 |
[프로그래머스 / Python] K번째 수 (0) | 2023.02.06 |
[프로그래머스 / Python] 체육복 (1) | 2023.02.05 |