Regex
-
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 파일명에서 HEAD, NUMBER, TAIL을 구분하기 위해서 GROUP을 활용했다. 필요 없는 0 제거하기 int(문자열)을 사용하면, 앞에 있는 필요 없는 "0"을 자동으로 제거해준다. str.lstrip("0")을 활용할 경우, 숫자 "0"도 제거돼 오류가 발생한다. GROUPS 해당 GROUP에 패턴을 찾지 못했다면, group[i] 빈칸을 가지고 있다. 찾지 못한 경우를 위해 예외처리를 하지 않아도 된다. # 파일명에 포함된 숫자를 반영한 정렬 기능 구현 # 숫자 : 0 ~ 99..
[Python] 프로그래머스 [3차] 파일명 정렬 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 파일명에서 HEAD, NUMBER, TAIL을 구분하기 위해서 GROUP을 활용했다. 필요 없는 0 제거하기 int(문자열)을 사용하면, 앞에 있는 필요 없는 "0"을 자동으로 제거해준다. str.lstrip("0")을 활용할 경우, 숫자 "0"도 제거돼 오류가 발생한다. GROUPS 해당 GROUP에 패턴을 찾지 못했다면, group[i] 빈칸을 가지고 있다. 찾지 못한 경우를 위해 예외처리를 하지 않아도 된다. # 파일명에 포함된 숫자를 반영한 정렬 기능 구현 # 숫자 : 0 ~ 99..
2023.02.22 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 문자열을 완전 탐색해 정해진 패턴을 찾는 방식으로 문제를 풀었다. 이전 패턴과 겹치는지 여부를 확인하기 위해서 idx를 활용했다. def solution(babbling): answer = 0 for bab in babbling: # 비교할 문자열 temp_c = "" # 이전에 나온 단어 확인 prev_idx = -1 for c in bab: temp_c +=c # 못 찾은 경우 중단 if len(temp_c) > 4: break # 체크 시작 for idx, word in enumer..
[파이썬] 프로그래머스 옹알이 (2) 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 문자열을 완전 탐색해 정해진 패턴을 찾는 방식으로 문제를 풀었다. 이전 패턴과 겹치는지 여부를 확인하기 위해서 idx를 활용했다. def solution(babbling): answer = 0 for bab in babbling: # 비교할 문자열 temp_c = "" # 이전에 나온 단어 확인 prev_idx = -1 for c in bab: temp_c +=c # 못 찾은 경우 중단 if len(temp_c) > 4: break # 체크 시작 for idx, word in enumer..
2023.01.24 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 공통된 숫자를 미리 확인한 뒤 필요한 숫자만 개수를 확인했다. 하지만 확인할 숫자의 개수가 10개 뿐이어서 굳이 그럴 필요는 없었던 거 같다. 0이 여러번 반복되는 문자열을 처리하기 위해서 정규 표현식을 사용 했다. from collections import Counter import re def solution(X, Y): answer = "" # 문자열로 변경 X, Y = map(str, (X, Y)) # 공통 숫자 확인 com_num = sorted(set(X) & set(Y), r..
[파이썬] 프로그래머스 숫자 짝꿍 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 공통된 숫자를 미리 확인한 뒤 필요한 숫자만 개수를 확인했다. 하지만 확인할 숫자의 개수가 10개 뿐이어서 굳이 그럴 필요는 없었던 거 같다. 0이 여러번 반복되는 문자열을 처리하기 위해서 정규 표현식을 사용 했다. from collections import Counter import re def solution(X, Y): answer = "" # 문자열로 변경 X, Y = map(str, (X, Y)) # 공통 숫자 확인 com_num = sorted(set(X) & set(Y), r..
2023.01.19 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 조건이 까다로워서 정규 표현식으로 풀었다. [ic]+[/ic], [ic]^[/ic], [ic]$[/ic] 등 패턴을 익히느라 풀이까지는 시간이 조금 걸렸다. import re def solution(new_id): # 대문자 -> 소문자 new_id = new_id.lower() # 허용되는 문자만 받아오기 new_id = re.sub(r"[^0-9a-z-_.]", "", new_id) # .는 그대로 쓰면 문자 전체가 됨 new_id = re.sub(r"[.]+", ".", new_id) new_..
[파이썬] 프로그래머스 신규 아이디 추천프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 조건이 까다로워서 정규 표현식으로 풀었다. [ic]+[/ic], [ic]^[/ic], [ic]$[/ic] 등 패턴을 익히느라 풀이까지는 시간이 조금 걸렸다. import re def solution(new_id): # 대문자 -> 소문자 new_id = new_id.lower() # 허용되는 문자만 받아오기 new_id = re.sub(r"[^0-9a-z-_.]", "", new_id) # .는 그대로 쓰면 문자 전체가 됨 new_id = re.sub(r"[.]+", ".", new_id) new_..
2022.09.27 -
기본 패턴 re.search() : 주어진 패턴과 일치해야 함 re.match() : 주어진 패턴과 처음부터 일치해야 함 고급 패턴 () : 문자열을 그룹으로 묶어서 관리(캡쳐)할 수 있도록 도와준다. \1 ~ 9 : 캡쳐된 그룹의 인덱스를 명시해서 참고할 수 있다. # () : 그룹 지정, \1 : 캡쳐된 그룹 참조 re_pt1 = r"(aya|ye|woo|ma)\1+" 찾고자 하는 패턴이 반복되는 경우, Group 또는 findall을 활용할 수 있다. Group 활용한 경우 예시 # 우선 Group으로 match 시작 >>> m = re.match('([0-9]+) ([0-9]+)', '10 295') >>> m.group(1) # 첫 번째 그룹(그룹 1)에 매칭된 문자열을 반환 '10' >>> m..
[파이썬] 정규 표현식 활용하기기본 패턴 re.search() : 주어진 패턴과 일치해야 함 re.match() : 주어진 패턴과 처음부터 일치해야 함 고급 패턴 () : 문자열을 그룹으로 묶어서 관리(캡쳐)할 수 있도록 도와준다. \1 ~ 9 : 캡쳐된 그룹의 인덱스를 명시해서 참고할 수 있다. # () : 그룹 지정, \1 : 캡쳐된 그룹 참조 re_pt1 = r"(aya|ye|woo|ma)\1+" 찾고자 하는 패턴이 반복되는 경우, Group 또는 findall을 활용할 수 있다. Group 활용한 경우 예시 # 우선 Group으로 match 시작 >>> m = re.match('([0-9]+) ([0-9]+)', '10 295') >>> m.group(1) # 첫 번째 그룹(그룹 1)에 매칭된 문자열을 반환 '10' >>> m..
2022.09.14