https://school.programmers.co.kr/learn/courses/30/lessons/17686#
import re
def solution(files):
answer = []
dic={}
for i in files:
a = re.split(r"([0-9]+)", i)
dic[i] = a
# a = re.findall(r'\d+|\D+', i)
# for j in range(len(a)):
# a[j] = a[j].replace(" ","")
# a[j] = a[j].replace(',','')
# a[j] = a[j].replace('-','')
# a[j] = a[j].replace('.','')
# a[j] = a[j].lower()
# dic[i] = a
# for i in files:
# a = ''
# for j in i:
# if j.isalpha():
# a += j.lower()
# else:
# a += j
# a = a.replace('-','')
# a = a.replace(' ','')
# a = a.replace(',','')
# a = re.findall(r'\d+|\D+', a)
# dic[i] = a
sorted_keys = sorted(dic, key=lambda x: (dic[x][0].lower(), int(dic[x][1])))
answer = [key for key in sorted_keys]
return answer
엄청난 노력의 흔적들...
이 문제를 한마디로 요약하자면,
정규식을 쓸 줄 알면 쉽게 풀리고 쓸 줄 모른다면 어렵게 느껴지는 문제다.
정규식을 잘은 못쓰지만 어떻게 어떻게 검색해서 풀어봤다.
주석처리 한 코드가 처음 제출한 코드였다.
하지만 6 7. 8 9번에서 실패가 나왔고 질문하기를 통해도 도저히 6 7. 8 9번을 통과하지 못했다..
결국 검색을 통해 정답을 확인했고 필터 부분의 코드만 교체했다.
정말... 문제 자체는 어렵지 않았지만 정규식 때문에라도 2.5레벨이라 느껴졌다.
+++
주석처리한 부분
즉 내가 처음 제출한 코드에서 모든 특수문자를 replace('특수문자','')한 것이 문제였다.
ㅠㅠ
import re
def solution(files):
answer = []
dic={}
for i in files:
# a = re.split(r"([0-9]+)", i)
# dic[i] = a
a = re.findall(r'\d+|\D+', i)
for j in range(len(a)):
a[j] = a[j].lower()
dic[i] = a
# for i in files:
# a = ''
# for j in i:
# if j.isalpha():
# a += j.lower()
# else:
# a += j
# a = a.replace('-','')
# a = a.replace(' ','')
# a = a.replace(',','')
# a = re.findall(r'\d+|\D+', a)
# dic[i] = a
sorted_keys = sorted(dic, key=lambda x: (dic[x][0].lower(), int(dic[x][1])))
answer = [key for key in sorted_keys]
return answer
특수문자를 제거하는 코드만 제거하니 무난하게 통과했다...
문제 설명좀 자세히 해주지...!
'알고리즘' 카테고리의 다른 글
*프로그래머스) 삼각 달팽이-python (0) | 2023.02.10 |
---|---|
프로그래머스)신규 아이디 추천-python (0) | 2023.02.09 |
프로그래머스)두 정수 사이의 합-python (0) | 2023.02.08 |
React)경고- react_devtools_backend.js:4012 Warning: You provided a `checked` prop to a form field without an `onChange` handler. (0) | 2023.02.07 |
프로그래머스)[1]차 다트 게임-pyhton (0) | 2023.02.07 |