0. 문제 링크
https://www.acmicpc.net/problem/3107
1. 풀이 방법
비교적 간단했던 문제
첫 번째는 ::을 복원하는 것이다.
파이썬의 split(':')을 사용하면 :을 기준으로 나누는데, 만약 맨 앞이나 맨 뒤에 ::이 있다면, 리스트에 ''이 두 개나 들어가게 된다.
참고로 중간에 ::이 있으면 ''이 하나만 들어감
아무튼 ''의 개수를 세서 그게 맞게 0000의 그룹을 복원함
그 다음에는 이제 앞의 0이 없어진 상황을 봐야하는데, 간단하게 길이가 4보다 작으면, 그만큼 0을 앞에 추가하면 된다.
뒤에 short는 숏코딩 버전임 ㅎㅎ;
2. 코드
import sys
input = sys.stdin.readline
def long():
maps = list(input().strip().split(':'))
l = 8 - len(maps) # ::의 개수를 세서 0000을 집어넣음
match maps.count(''):
case 1:
# 1개만 있을 경우, 중간에 있다는 의미임
maps[maps.index('')] = ('0' * 4 + ':') * l + '0000'
case 2:
# 2개가 있을 경우, 맨 앞 혹은 맨 뒤에 0000의 그룹이 있다는 의미임
maps[maps.index('')] = ('0' * 4 + ':') * (l + 1) + '0000'
maps.remove('')
for i, num in enumerate(maps):
if (l := len(num)) < 4:
# 길이가 4보다 작으면 앞에 적은만큼 0을 추가해줌
maps[i] = '0' * (4 - l) + num
print(':'.join(maps))
def short():
import ipaddress as _
print(_.ip_address(input()).exploded)
if __name__ == "__main__":
long()
3. 마무리
'Computer Science > 알고리즘' 카테고리의 다른 글
[백준 - Python] 20442 - ㅋㅋ루ㅋㅋ (1) | 2023.05.03 |
---|---|
[백준 - Python] 1414 - 불우이웃돕기 (0) | 2023.05.03 |
[백준 - Python] 1445 - 일요일 아침의 데이트 (0) | 2023.04.12 |
[백준 - Python] 22866 - 탑 보기 (0) | 2023.04.12 |
[백준 - Python] 14950 - 정복자 (1) | 2023.04.12 |