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 |