코딩테스트)날짜순으로 메모를 정렬하라-2

장석빈·2022년 6월 8일
0

-문제가 3인조 강도단이라고해서 입력받는 문자열이 3개라고 생각하고 풀었지만 이는 문제를 잘못 이해한 것일 수도 있다고 생각하여 여러 개의 문자를 입력받아서 순서대로 날짜를 추출하여 추출한 날짜를 딕셔너리의 key, value에는 각각의 순서를 표시하기위한 인덱스를 할당하여 문제를 해결해보았다.

import re
l = []
while True:
  temp = input()
  if temp == "END":
    break
  else:
    l.append(temp)
l2 = []
for i in l:
  if "-" in i:
    start = i.find("-") - 2
    end = i.rfind("-") + 3
    l2.append(re.findall(r'\d+', i[start:end]))
  elif "/" in i:
    start = i.find("/") - 2
    end = i.rfind("/") + 3
    l2.append(re.findall(r'\d+', i[start:end]))
  else:
    start = i.find("년") - 2
    end = i.rfind("일")
    l2.append(re.findall(r'\d+', i[start:end]))
l3 = {}
k = 0
for i in l2:
  temp = ""
  for j in i:
    if len(j) != 2:
      j = "0" + j
    temp += j
  l3[temp] = k
  k += 1
sdict = sorted(l3.items())
for i in range(len(sdict)):
	print(l[sdict[i][1]])

테스트케이스 1,2,3은 pass이지만 4에서 실패했다.

원인분석

-주어진 문자열에 "년","월","일',"-","/"가 추가로 있는 경우에 내가 구성한 날짜를 추출하는 알고리즘에 문제가 생길 수 있음을 파악했다.내가 구성한 알고리즘은 주어진 문자열에서 "년","월","일',"-","/"을 기준으로 인덱스값을 찾아서 숫자를 추출하는 방식으로 구성하였는데 이는 해당 문자가 날짜를 추출하는 부분이외에 또 있을 경우에 날짜 추출에 문제를 야기할 수 있다.
결론적으로 정규표현식을 사용하여 입력받은 문자열에서 날짜를 정확히 추출하는 것이 필요하다.

profile
회피형 인간의 개과천선기

0개의 댓글