제목: 99클럽 코테 스터디 4일차 TIL + 오늘의 학습 키워드 : 문자열+해시
- 오늘의 학습 키워드 : 문자열+해시
학습 키워드의 해시는 암호해독인가보다..;;
- 공부한 내용 본인의 언어로 정리하기
1.
사용예시
- 오늘의 회고
오늘 ..;; 이 코테 문제 정복하고 잘거야..
슬슬 나에게 있는 단점인, 그냥 인증하고 끝나버리는 습관이 작심삼일째 드러나고 있다.
꼭 해결하자! 적으면서 영단어 외우듯이 익숙해질 필요가 있는 것 같다
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
def solution(s):
# 영어가 저장된 리스트 만들기
english_list = ['zero','one','two','three','four','five','six','seven','sight','nine']
# 각 배열의 인덱스는 0부터 시작하기 때문에
# for문을 돌려서 s 라는 문자열에 해당 english_list[i]~[9]까지 돌려서 발견한 문자열이 있다면,
# 숫자로 반환해준다?!!
# 결과를 저장할 변수와 for문에 사용할 변수 미리 선언
answer = ''
i = 0
return answer
우선, 나는 각 숫자에 대한 영어로된 문자열을 리스트에 저장해서 for문을 돌리면서 비교해서 찾으면 해당 문자열을 찾은 배열 위치 값 그대로 숫자로 받는 작업을 진행할려고했으나,,, 중간에 알고리즘 설계부분에서 막혀버렸다.
뤼튼의 도움을 받느데,, 뤼튼은 숫자와 영어를 매핑할 수 있도록 즉, 키 :값 형태를 가질 수 있는 딕셔너리를 사용했다.
사실 막혀서 더 이상 푸는 걸 포기하고 AI에게 맡겨버렸다 ㅠㅠ
- 어떻게 해결했는지
def solution(s):
# 숫자와 영단어의 매핑을 딕셔너리로 생성
word_to_digit = {
'zero': '0',
'one': '1',
'two': '2',
'three': '3',
'four': '4',
'five': '5',
'six': '6',
'seven': '7',
'eight': '8',
'nine': '9'
}
# 결과를 저장할 문자열
answer = ''
i = 0
while i < len(s):
# 문자열에서 숫자로 변환 가능하면 변환
if s[i].isdigit():
answer += s[i]
i += 1
else:
# 영단어를 찾기 위해 최대 5글자 (최대 길이의 영단어)까지 확인
for j in range(3, 6): # 3글자에서 5글자까지
if s[i:i+j] in word_to_digit:
answer += word_to_digit[s[i:i+j]]
i += j # 영단어의 길이만큼 이동
break
return int(answer)
설명
1. 딕셔너리 생성: 숫자와 영단어를 매핑하는 딕셔너리를 생성합니다.
2.문자열 순회: 주어진 문자열 s를 한 글자씩 순회합니다.
3.만약 현재 글자가 숫자라면, 결과 문자열에 추가합니다.
4.만약 현재 글자가 숫자가 아니라면, 최대 5글자까지 슬라이스해서 영단어를 찾습니다.
5.영단어 발견 시 처리: 영단어가 발견되면 대응하는 숫자를 결과 문자열에 추가하고, 인덱스를 이동합니다.
6.결과 반환: 최종적으로 조합된 숫자 문자열 answer 앞에 정수형 변환을 할 수 이쓴 int를 적용해서 반환해주면 된다.
- 무엇을 새롭게 알았는지
1. 코테에서 ~대응하는 이라는 단어나 아래와 같은 표를 참고해서 보여줬을 때는 ' 딕셔너리' 생성을 생각 할 것!
- 내일 학습할 것은 무엇인지
SQLD개발자 자격시험을 위한 이론 공부와 문제풀이를 최소 10시간 이상 카페에 자리 잡고 공부할겁니다.
99클럽 코테 스터디 6일차 TIL + 오늘의 학습 키워드 : 해시 (4) | 2024.11.02 |
---|---|
99클럽 코테 스터디 5일차 TIL + 오늘의 학습 키워드 : 해시 (0) | 2024.11.01 |
제목: 99클럽 코테 스터디 3일차 TIL + 오늘의 학습 키워드 : 문자열 (4) | 2024.10.30 |
[PCCP 기출문제] 1번/ 동영상 재생기 -파이썬 (0) | 2024.10.29 |
99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드 : 문자열 (0) | 2024.10.29 |