Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Brightics를 이용한 분석
- Brigthics
- 추천시스템
- 혼공머신
- Brigthics Studio
- Brightics
- 노코드AI
- 포스코 아카데미
- 포스코 청년
- 삼성SDS
- 혼공
- 혼공머신러닝딥러닝
- 모델링
- 데이터 분석
- 직원 이직여부
- 개인 의료비 예측
- 삼성 SDS Brigthics
- 삼성SDS Brigthics
- Brightics Studio
- 삼성 SDS
- 브라이틱스 서포터즈
- 삼성SDS Brightics
- 직원 이직률
- 혼공학습단
- Brigthics를 이용한 분석
- 데이터분석
- 영상제작기
- 캐글
- 팀 분석
- 브라이틱스
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 2_튜플(2019 카카오 개발자 겨울 인턴십) 본문
📌문제 유형
2019 카카오 개발자 겨울 인턴십
📌문제
📌나의 문제풀이
- 주석 참조
def solution(s):
answer = []
new = []
# 앞뒤 {} 없애기
s = s[2:-2]
# {,} 기준으로 자르기
l = list(map(str,s.split('{')))
l = list(map(str,s.split('}')))
# 맨 앞은 숫자로 나와서 new에 그냥 추가
new.append(l[0])
# ,{를 ''로 바꿔서 new에 넣기
for words in l:
if words.find(',{') == False:
words = words.replace(',{','')
new.append(words)
# new 안에 str 길이 순으로 정렬
new = sorted(new, key=len)
# new안의 원소 길이가 1일때는 answer에 그냥 넣기, 이외는 다시 리스트 만들어서 answer에 없는 값만 넣기
for i in range(len(new)):
if len(new[i]) == 1:
answer.append(int(new[i]))
else:
li = list(map(int,new[i].split(',')))
for num in li:
if num in answer:
continue
else:
answer.append(num)
return answer
📌다른 사람의 문제풀이
1) 정규표현식
- Counter의 most_common() 넣으면 개수 순으로 정렬되는거 추가 가능
- 정규표현식
- re.findall('패턴 문자열', '문자열') : 모든 문자열 패턴 찾기
- \d+ : 하나 혹은 그 이상 연결된 숫자 (붙어 있는 숫자끼리 count 됨)
def solution(s):
s = Counter(re.findall('\d+', s))
return list(map(int, [k for k, v in sorted(s.items(), key=lambda x: x[1], reverse=True)]))
import re
from collections import Counter
2) strip 사용
- strip : 지정 문자 삭제
def solution(s):
answer = []
s1 = s.lstrip('{').rstrip('}').split('},{')
new_s = []
for i in s1:
new_s.append(i.split(','))
new_s.sort(key = len)
for i in new_s:
for j in range(len(i)):
if int(i[j]) not in answer:
answer.append(int(i[j]))
return answer
3) 유사한 풀이
def solution(s):
# {{, }}를 제거 후 },{ 으로 나누기
data = s[2:-2].split("},{")
# 길이 별로 오름차순 정렬
data = sorted(data, key=lambda x: len(x))
answer = []
for item in data:
# 각각의 원소로 분류 후
item = list(map(int, item.split(",")))
for value in item:
# 포함되어 있지 않으면 input
if value not in answer:
answer.append(value)
return answer
4) eval 사용
- eval : 사칙연산 식을 문자로 받은 걸 실행 (다른 처리 필요 없음)
def solution(s):
s = eval(s.replace("{", "[").replace("}", "]"))
answer = list({num:0 for k in sorted(s, key=lambda x: len(x)) for num in k}.keys())
return answer
📌리뷰
- 문자열 함수 : replace, split, strip (+ 강력한 무기 : 정규표현식)
- eval : 문자로 받은 사칙연산을 우리가 아는 식으로 처리
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스/Python] Level 2_[1차] 뉴스 클러스터링(2018 KAKAO BLIND RECRUITMENT) (0) | 2022.10.28 |
---|---|
[프로그래머스/Python] Level 2_n^2 배열 자르기(월간 코드 챌린지 시즌3) (0) | 2022.10.17 |
[프로그래머스] Level 2_괄호 회전하기(월간 코드 챌린지 시즌2) (0) | 2022.10.14 |
[프로그래머스] Level 2_행렬의 곱셈(연습문제) (0) | 2022.10.13 |
[프로그래머스] Level 2_[1차]캐시(2018 KAKAO BLIND RECRUITMENT) (0) | 2022.10.13 |
Comments