PythonCodeFight-Day13

Day_13

Intro

Q21. isIPv4Address

An IP address is a numerical label assigned to each device (e.g., computer, printer) participating in a computer network that uses the Internet Protocol for communication. There are two versions of the Internet protocol, and thus two versions of addresses. One of them is the IPv4 address.

제출 코드

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
def isIPv4Address(inputString):
dotidxlist = []

if len(inputString) >= 15 or len(inputString) < 8:
return False
else:
for i in range(len(inputString)):
if inputString[i] == ".":
dotidxlist.append(i)

if len(dotidxlist) != 3:
return False
else:
for i in range(len(dotidxlist)):
if i == 0:
try:
Temp = int(inputString[0:dotidxlist[i]])
if Temp < 0 or Temp > 255:
return False
except:
return False

elif i == len(dotidxlist)-1:
try:
Temp1 = int(inputString[dotidxlist[i-1]+1:dotidxlist[i]])
if Temp1 < 0 or Temp1 > 255:
return False
except:
return False

try:
Temp2 = int(inputString[dotidxlist[i]+1:])
if Temp2 < 0 or Temp2 > 255:
return False
except:
return False
else:
try:
Temp = int(inputString[dotidxlist[i-1]+1:dotidxlist[i]])
if Temp < 0 or Temp > 255:
return False
except:
return False
return True

현재 결과
33/35 tests passed.
Sample tests: 18/18
Hidden tests: 15/17
Score: 276/300

  • 2개의 히든케이스를 만족하지 못했음 => 연산시간적인 문제 혹은 다른 문제 때문에 발생했다고 판단됨

해결 방안

  • 파이썬에서 제공하는 string 관련 기본적인 메소드 들을 이용해서 다시 한 번 작성하기
    • string의 경우 내장함수 split 을 이용하면 원하는 키워드를 기준으로 string 문자열을 분리해낼 수 있음

작성 흐름

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
# Case
# inputString = "172.16.254.1"
inputString = ".254.255.0"

print(len(inputString))

dotidxlist = []
if len(inputString) >= 15:
print("False")
else:
for i in range(len(inputString)):
if inputString[i] == ".":
dotidxlist.append(i)
print('idx = %d '%(i))
print("True")
print(dotidxlist)
for i in range(len(dotidxlist)):
if i == 0:
try:
Temp = int(inputString[0:dotidxlist[i]])
print(Temp)
if Temp < 0 or Temp > 255:
print("False")
except:
print("Empty False")
# print(i)
elif i == len(dotidxlist)-1:
try:
Temp1 = int(inputString[dotidxlist[i-1]+1:dotidxlist[i]])
print(Temp1)
if Temp1 < 0 or Temp1 > 255:
print("False")
except:
print("Empty False")

try:
Temp2 = int(inputString[dotidxlist[i]+1:])
print(Temp2)
if Temp2 < 0 or Temp2 > 255:
print("False")
except:
print("Empty False")
# print(i)
else:
try:
Temp = int(inputString[dotidxlist[i-1]+1:dotidxlist[i]])
print(Temp)
if Temp < 0 or Temp > 255:
print("False")
except:
print("Empty False")
# print(i)
print("True")