๐ข IPv6
1. ๋ฌธ์ ๋งํฌ
2. ์ฝ๋
Python3
31120KB
40ms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
[3107] IPv6
๐ ๋ฌธ์
IPv6์ ๊ธธ์ด๊ฐ 128๋นํธ์ธ ์ฐจ์ธ๋ ์ธํฐ๋ท ํ๋กํ ์ฝ์ด๋ค.
IPv6์ ์ฃผ์๋ 32์๋ฆฌ์ 16์ง์๋ฅผ 4์๋ฆฌ์ฉ ๋์ด ๋ํ๋ธ๋ค.
์ด๋, ๊ฐ ๊ทธ๋ฃน์ ์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถํด์ ๋ํ๋ธ๋ค.
์๋ฅผ ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ๋ค.
2001:0db8:85a3:0000:0000:8a2e:0370:7334
32์๋ฆฌ์ 16์ง์๋ ์ฌ๋์ด ์ฝ๊ณ ์ฐ๊ธฐ์ ๋ถํธํ๊ณ ,
๋๋ถ๋ถ์ ์๋ฆฌ๊ฐ 0์ด๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ์ถ์ฝํ ์ ์๋ค.
๊ฐ ๊ทธ๋ฃน์ ์์๋ฆฌ์ 0์ ์ ์ฒด ๋๋ ์ผ๋ถ๋ฅผ ์๋ต ํ ์ ์๋ค.
์์ IPv6์ ์ถ์ฝํ๋ฉด, ๋ค์๊ณผ ๊ฐ๋ค
2001:db8:85a3:0:00:8a2e:370:7334
๋ง์ฝ 0์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ ๊ทธ๋ฃน์ด ์์ ๊ฒฝ์ฐ ๊ทธ ์ค ํ ๊ฐ ์ด์ ์ฐ์๋ ๊ทธ๋ฃน์ ํ๋ ๊ณจ๋ผ ์ฝ๋ก 2๊ฐ(::)๋ก ๋ฐ๊ฟ ์ ์๋ค.
2001:db8:85a3::8a2e:370:7334
2๋ฒ์งธ ๊ท์น์ ๋ชจํธํจ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ค์ง ํ ๋ฒ๋ง ์ฌ์ฉํ ์ ์๋ค.
์ฌ๋ฐ๋ฅธ ์ถ์ฝํ IPv6์ฃผ์๊ฐ ์ฃผ์ด์ก์ ๋,
์ด๋ฅผ ์๋ IPv6 (32์๋ฆฌ์ 16์ง์)๋ก ๋ณต์ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ ์
๋ ฅ
์ฒซ์งธ ์ค์ ์ฌ๋ฐ๋ฅธ IPv6 ์ฃผ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์ฃผ์๋ ์ต๋ 39๊ธ์์ด๋ค.
๋ํ, ์ฃผ์๋ ์ซ์ 0-9, ์ํ๋ฒณ ์๋ฌธ์ a-f, ์ฝ๋ก :์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
๐ ์ถ๋ ฅ
์ฒซ์งธ ์ค์, ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง IPv6์ ์ถ์ฝ๋์ง ์์ ํํ๋ฅผ ์ถ๋ ฅํ๋ค.
"""
IPv6 = input()
IPv6 = IPv6.split(':')
# # ['25', '09', '1985', 'aa', '091', '4846', '374', 'bb']
# print(IPv6)
temp = []
for i in range(len(IPv6)):
if len(IPv6[i]) == 0:
temp.append(i)
continue
if len(IPv6[i]) < 4:
# 0 ์๋ ๋งํผ ์ฑ์์ค
IPv6[i] = "0" * (4 - len(IPv6[i])) + IPv6[i]
# print(IPv6)
# print(temp)
# 0์ผ๋ก๋ง ์ด๋ฃจ์ด์ง
if temp:
for _ in temp:
del IPv6[temp[0]]
# IPv6์ ๊ธธ์ด๊ฐ 8์ด ๋ ๋๊น์ง
while len(IPv6) != 8:
IPv6.insert(temp[0], "0000")
print(":".join(IPv6))
3. ํด์ค
This post is licensed under CC BY 4.0 by the author.