문제
https://school.programmers.co.kr/learn/courses/30/lessons/81301
1. 코드 풀이
- 일부 자릿수가 영단어=> 즉 영단어+ 숫자 합쳐진 문자열이 주어짐
- 이 문자열에서 합쳐진 문자열을 숫자로 이루어진 형태로 출력해줘야 함
2. 코드 실행
창피하게도.. 정말 여기서 아무것도 못하겠어서..ㅠ 저 고민의 흔적!!! ㅠㅠ
//첫번째 시도
def solution(s):
eng={'zero':0,'one':1,'two':2,'three':3,'four':4,'five':5,'six':6,'seven':7,'eight':8,'nine':9}
for key in eng:
s=s.replace(key,eng[key])
return int(s)
처음 생각했던 건 이거였다. 영어를 받으면 바꿔주면 되니까.. 딕셔너리로 생각했는데 ㅠㅠ 오류가 났다
int와 string 형태로 이루어져서 그런가?? 싶어서 문자열로 바꿔주고 다시 실행했더니
-_-.. 이 애매한 1개 성공. ㅋㅋ
또 다시 생각해보자..
중요한건
입력값 one4seveneight
기댓값 1478
입력값 23four5six7
기댓값 234567
>> 이렇게 나와야 한다.
여기서 내가 파악한 부분은
- 입력값이 그냥 숫자일 경우 숫자를 그대로 반환해야한다
- 영어값이 있을 경우 숫자로 바꿔주어야 한다.
//두번째 시도
def solution(s):
eng = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
num = ''
word = ''
for char in s:
if char.isdigit():
num += char
else:
word += char
if word in eng:
num += eng[word]
word = ''
return int(num)
숫자와 문자열을 따로따로 받아서 어찌저찌 성공하긴 했는데..
너무너무 지저분했다 ㅠㅠㅠ 보기도 싫다.. 구글링 도움을 좀 받았는데
어차피 딕셔너리로 사용하는거 replace라는 게 있었다..!!!!
// 세번째 시도
def solution(s):
eng = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
for word, num in eng.items():
s = s.replace(word, num)
return int(s)
4. 결과
ㅠㅠ 드디어.. ㅠㅠ
항해에서 올려주신 미들러 문제 처음 풀어봤는데...
나 정말 왕초보구나 라는 생각도 많이했고..ㅠㅠ
파이썬 공부 많이 해야겠다고 생각했다.. ㅠㅠㅠㅠ
그리고 진짜 문제를 이해하는 게 중요한 것 같다. 초반에 문제 자체를 이해를 못해서 계속 해맸다 ㅠㅠ
파이팅.. ㅠㅠ
'Algorithm > 항해일지 TIL' 카테고리의 다른 글
[DAY 5] 프로그래머스 LV1. 자연수 뒤집어 배열로 만들기 (0) | 2024.04.01 |
---|---|
[DAY 4] 프로그래머스 LV1. 콜라츠 추측 (1) | 2024.03.31 |
[DAY 3] 프로그래머스 LV0. 문자열을 정수로 변환하기 (0) | 2024.03.30 |
[DAY 1] 프로그래머스 LV1. 핸드폰 번호 가리기 (1) | 2024.03.29 |
[DAY 2] 프로그래머스 LV1. 부족한 금액 계산하기 (0) | 2024.03.29 |