📜 접근 방법
1. ":"를 기준으로 문자열을 쪼갠다.
2. 쪼갠 문자열을 for문을 돌린다.
3. 빈 문자열일 경우 현재 문자열 갯수만큼 "0000:"을 추가한다.
4. 빈 문자열이 아닐 경우 (4 - s의 갯수)만큼 0을 추가한 후 문자열 s + : 를 추가한다.
❌ 실패 코드
import sys
s_list = sys.stdin.readline().strip().split(":")
res = ""
check = True
for s in s_list:
if s == "":
if check:
if len(s_list) < 8:
for i in range(8 - len(s_list)):
res += "0000:"
check = False
res += "0000:"
else:
if len(s) != 4:
for i in range(4 - len(s)):
res += "0"
res += s
else:
res += s
res += ":"
print(res[:-1])
반례
입력 : 1:2:3:4:5:6:7::
정답 : 0001:0002:0003:0004:0005:0006:0007:0000
출력 : 0001:0002:0003:0004:0005:0006:0007:0000:0000
즉, 1::, :: 을 고려해야한다. 이는 split(":")를 할 경우, 문자열이 3개가 되기 때문이다.
생각해보니 위의 if문은 필요 없고 for문에서 (8 - 쪼갠 문자열 갯수) + 1을 하고, else문으로 바꿔주면 되는 문제였다.
✅ 정답 코드
import sys
s_list = sys.stdin.readline().strip().split(":")
res = ""
check = True
for s in s_list:
if s == "":
if check:
for i in range(8 - len(s_list) + 1):
res += "0000:"
check = False
else:
res += "0000:"
else:
if len(s) != 4:
res += "0" * (4 - len(s))
res += s + ":"
print(res[:-1])
💡알게 된점
'코딩테스트 > Python' 카테고리의 다른 글
[python] pccp 모의고사 2 실습용 로봇 (0) | 2023.03.22 |
---|---|
[python] pccp 모의고사 1 외톨이 알파벳 (0) | 2023.03.18 |
[python 백준 1715] 카드 정렬하기 (0) | 2023.02.04 |
[python 백준 1541] 잃어버린 괄호 (0) | 2023.02.02 |
[python 백준 7662] 이중 우선순위 큐 (1) | 2023.01.29 |