일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |
- 노코드AI
- Brightics를 이용한 분석
- 브라이틱스
- 삼성SDS Brightics
- 캐글
- 삼성SDS
- 삼성 SDS
- 혼공
- 혼공머신
- 개인 의료비 예측
- 포스코 청년
- 추천시스템
- 데이터 분석
- Brightics Studio
- 영상제작기
- 직원 이직률
- 포스코 아카데미
- 삼성SDS Brigthics
- Brigthics Studio
- 혼공학습단
- 모델링
- 직원 이직여부
- 팀 분석
- 삼성 SDS Brigthics
- Brightics
- 브라이틱스 서포터즈
- Brigthics
- 데이터분석
- Brigthics를 이용한 분석
- 혼공머신러닝딥러닝
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 2_튜플(2019 카카오 개발자 겨울 인턴십) 본문
📌문제 유형
2019 카카오 개발자 겨울 인턴십
📌문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌나의 문제풀이
- 주석 참조
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 됨)
04 모든 문자열 패턴 찾기 (findall)
``` finditer()는 정규식과 매치되는 모든 문자열을 iterator 객체로 리턴한다. iterator 객체의 값을 불러오려면 for문을 이용해 읽어들여야 한다. ...
wikidocs.net
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 : 지정 문자 삭제
4.2 파이썬 문자열 strip() 함수 : strip() 함수의 정의
파이썬 스트립()이란 무엇입니까? Python strip() 함수는 Python 라이브러리에서 사용할 수 있는 내장 함수의 일부입니다. strip() 메서드는 원래 문자열의 시작과 끝에서 주어진 문자를
www.entity.co.kr
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 : 사칙연산 식을 문자로 받은 걸 실행 (다른 처리 필요 없음)
Python eval() 함수를 아시나요?
도대체 뭘 하는 함수길래 사용을 조심하라는 포스팅이 먼저 노출이 될까...(warning : 이 포스팅은 python eval() 함수 - 사용을 조심해야 하는 이유 를 보고 고대로 따라 하였습니다. )
velog.io
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 : 문자로 받은 사칙연산을 우리가 아는 식으로 처리
'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 |