본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

[python] 3107 - IPv6

3107번: IPv6 (acmicpc.net)

 

3107번: IPv6

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

www.acmicpc.net

 

문제 자체는 간단했다.

주어진 IPv6 주소를 원래의 주소로 복원하면 되는 문제였는데

 

접근 방식은 다음과 같다.

1. ':'을 기준으로 문자열을 나눈 리스트를 생성한다.

2. 리스트를 돈다

  2-1. 원소가 공백이 아니라면

       - 원소의 길이가 4가 아닐때 4가 될 때까지 앞자리를 0으로 채운다.

       - 원소의 길이가 4라면 넘어간다.

  2-2. 원소가 공백이라면

       - '0000' 을 전체 문자열에서 공백을 지운 크기 만큼 추가한다.

       - 그리고 cnt로 상태를 체크하여 공백을 두 번 계산 못하게 한다. (1:: 같은 경우를 위하여)

3. 문자열을 더할 때 마다 ':'을 붙였으므로 마지막 문자를 제외한 정답을 출력한다.

 

# 3107 IPv6
ipv6 = input()
lst=ipv6.split(':')

chk=[]
for i in lst:
    if i != '':
        chk.append(i)
cnt=0
total=''
for i in range(len(lst)):
    if lst[i] =='' and cnt != 1:
        total += '0000:'*(8-len(chk))
        cnt=1   
    elif lst[i] != '':
        if len(lst[i])<4 :
            total+= ('0'*(4-len(lst[i])))+lst[i]
            total+=":"
        else:
            total+=lst[i] + ":"

print(total[:-1])

 

 

그리고 좀 더 간단한 코드를 고민하다가 zfill()을 사용하면 된다는 것을 알았다.

 

 

 

* 모든 코드는 github에서 관리합니다.  seinShin (SEIN SHIN) (github.com)

 

seinShin - Overview

blog : https://bboddorong.tistory.com/. seinShin has 7 repositories available. Follow their code on GitHub.

github.com

 

728x90

'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글

[python] 4386 - 별자리 만들기  (0) 2023.06.20
[python] 9519 - 졸려  (0) 2023.06.19
[python] 2469 - 사다리 타기  (2) 2023.06.18
[python] 2608 - 로마 숫자  (0) 2023.06.15
[python] 7490 - 0 만들기  (0) 2023.06.15