Notice
Recent Posts
Recent Comments
Link
아는 만큼 보인다
[프로그래머스] 숫자 문자열과 영단어 python3 본문
프로그래머스 숫자 문자열과 영단어 python3 문제 바로가기
코딩테스트 연습 - 숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자
programmers.co.kr
이번 문제는 말도 안되게 복잡하게 생각해서 코드가 길어진 문제이자,
또 아직 python function에 대해 잘 모른다는 사실이 드러난..문제였다.
숫자와 문자가 섞인 string을 받았을 때, 나는 무식하게 하나씩 읽고 문자인지 숫자인지 판단하고 문자일 때에도 완전한 문자인지 또 확인하고 바꾸어주는 일을 manual 하게 구현했는데,,, replace function을 쓰면 간단하게 해결이 되는 것이었다..
내가 작성한 코드:
def solution(s):
answer = []
num_dict = {"zero":"0","one":"1", "two":"2", "three":"3",
"four":"4", "five":"5", "six":"6", "seven":"7",
"eight":"8", "nine":"9"}
strs = list(num_dict.keys())
nums = list(num_dict.values())
# j가 3에서 시작하는 이유는, 문자열은 최소 3자리일 것이니까..!
i, j = 0, 3
while i <= len(s)-1:
# 숫자라면, 바로 append
if s[i] in nums:
answer.append(s[i])
i += 1
# 숫자가 아니라면
else:
# 일단 세글자까지 읽어본다
candidate = s[i:i+j]
# 세글자까지 읽었는데 완전한 문자열이었다면 바로 append
if candidate in strs:
answer.append(num_dict[candidate])
# 이미 i+j까지는 읽었으니까 i에다가 j를 더함
i += j
# j는 다시 initialize
j = 3
# 세글자까지 읽었는데 완전한 문자열이 아니면 한글자 더읽기
else:
j += 1
# 합쳐주고 integer로 만들어주기
answer = ''.join(answer)
answer = int(answer)
return answer
replace를 활용한 코드 (다른 사람들의 풀이를 참고함)
num_dict = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
def solution(s):
answer = s
for key, value in num_dic.items():
# replace로 바로 대체... ^^...
answer = answer.replace(key, value)
return int(answer)
헤헤.. 이렇게 배워가는거지..머 !
'알고리즘&자료구조 > 코딩테스트 연습' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 python3 (0) | 2022.06.16 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 python3 (1) | 2022.06.16 |
[프로그래머스] H-index python3 (0) | 2022.06.11 |
[프로그래머스] K번째수 python3 (0) | 2022.06.11 |
[프로그래머스] 완주하지 못한 선수 python3 (0) | 2022.06.11 |