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
- Brigthics Studio
- 노코드AI
- 영상제작기
- 삼성SDS Brightics
- 혼공머신러닝딥러닝
- 포스코 청년
- 삼성SDS
- 추천시스템
- 개인 의료비 예측
- 모델링
- 브라이틱스 서포터즈
- 혼공머신
- 팀 분석
- 혼공학습단
- Brightics를 이용한 분석
- 포스코 아카데미
- 삼성 SDS Brigthics
- 직원 이직여부
- 캐글
- 혼공
- Brigthics를 이용한 분석
- Brightics
- Brightics Studio
- 데이터 분석
- 삼성SDS Brigthics
- 브라이틱스
- 삼성 SDS
- 직원 이직률
- 데이터분석
- Brigthics
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스/Python] Level 2_[3차] 압축 (2018 KAKAO BLIND RECRUITMENT) 본문
Coding Test/프로그래머스(Python)
[프로그래머스/Python] Level 2_[3차] 압축 (2018 KAKAO BLIND RECRUITMENT)
syunze 2023. 10. 11. 14:53📌문제 유형
2018 KAKAO BLIND RECRUITMENT
📌문제
📌나의 문제풀이
- check 함수에서 가장 긴 문자열 w 찾기
- 사전에 없는 단어일 경우, 그 전 인덱스 문자열까지를 리턴
- w+c 사전 등록 시, msg 문자열 길이를 넘어가지 않을 때만 사전에 등록
- 넘어가면 while문 자체를 종료
def check(now_char,msg,i,idx,char_dict):
now_char = msg[i:i+idx]
if now_char not in char_dict.keys() or i+idx == len(msg)+1:
return msg[i:i+idx-1]
else:
return check(now_char,msg,i,idx + 1,char_dict)
def solution(msg):
answer = []
char_dict = {'A':1, 'B':2, 'C':3 ,'D':4, 'E':5, 'F':6, 'G':7, 'H':8, 'I':9, 'J':10,
'K':11, 'L':12, 'M':13, 'N':14, 'O':15, 'P':16, 'Q':17, 'R':18,'S':19,
'T':20, 'U':21, 'V':22, 'W':23, 'X':24, 'Y':25, 'Z':26}
i = 0
while True:
if i == len(msg)+1:
break
now_char = msg[i]
now = check(now_char,msg,i,1,char_dict)
answer.append(char_dict[now])
if i + len(now) < len(msg):
char_dict[now + msg[i + len(now)]] = list(char_dict.values())[-1] + 1
else:
break
i = i + len(now)
return answer
📌다른 사람의 문제풀이
def solution(msg):
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
d = {k:v for (k,v) in zip(alphabet, list(range(1,27)))}
answer = []
while True:
if msg in d:
answer.append(d[msg])
break
for i in range(1, len(msg)+1):
if msg[0:i] not in d:
answer.append(d[msg[0:i-1]])
d[msg[0:i]] = len(d)+1
msg = msg[i-1:]
break
return answer
📌리뷰
- 딕셔너리 만들 때, {k:v for (k,v) in zip(alphabet, range(1,27))} 적용하기
- 놓친 부분 : 현재 입력과 일치하는 가장 긴 문자, while문 맨 뒷부분 처리
- check 함수에서 가장 긴 문자열 w 찾기
- 재귀함수에서 주의할 점 : 재귀에서 return 안해주면 none 나옴. 꼭꼭 답과 재귀함수 모두 return 해주기
- while문 처리
- 항상 끝에 어떻게 처리할지 확인하기 꼭꼭!
(어렵지 않은 문제인데 사소한 구현으로 시간 많이 씀)
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스/Python] Level 2_삼각 달팽이(월간 코드 챌린지 시즌1) (0) | 2023.10.17 |
---|---|
[프로그래머스/Python] Level 2_[3차] n진수 게임 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.10.13 |
[프로그래머스/Python] Level 2_멀쩡한 사각형 (Summer/Winter Coding(2019)) (0) | 2023.10.10 |
[프로그래머스/Python] Level 2_행렬 테두리 회전하기 (2021 Dev-Match:웹 백엔드 개발자(상반기)) (0) | 2023.09.26 |
[프로그래머스/Python] Level 2_배달 (Summer/Winter Coding(~2018)) (0) | 2023.09.25 |
Comments