일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 레벨2
- P Stage
- Django
- 서블릿
- 프로그래머스
- 2021 Dev-matching 웹 백엔드 개발자
- 구현
- boostcourse
- BOJ
- 대회
- 프로그래밍
- cs50
- 웹 프로그래밍
- 백엔드
- 부스트캠프
- 4기
- Customer service 구현
- 웹
- 파이썬
- 네이버
- 장고
- AI Tech 4기
- 풀스택
- Naver boostcourse
- 백준
- Naver boostcamp
- QNA 봇
- sts
- 서버
- AI Tech
Archives
- Today
- Total
daniel7481의 개발일지
[2021 카카오 채용연계형 인턴쉽] 숫자 문자열 본문
반응형
문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자영단어0 | zero |
1 | one |
2 | two |
3 | three |
4 | four |
5 | five |
6 | six |
7 | seven |
8 | eight |
9 | nine |
제한사항
- 1 ≤ s의 길이 ≤ 50
- s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
[출처: 프로그래머스]
풀이
파이썬의 만능 해시 자료형인 딕셔너리를 사용해야겠다고 문제를 보자마자 생각이 들었다. 숫자에 상응하는 영어 단어를 key값으로 두고 숫자를 value값으로 선언한 딕셔너리 dic를 선언하였다. 그 후 주어진 문자열을 스캔하며 각 요소가 만약 정수면(int형으로 형변환 할 때에 오류가 발생하지 않을 시) answer 배열에 넣어주고, 만약 오류가 발생하였으면(정수가 아닐 시) 딕셔너리에 해당하는 문자열이 나올 때까지 카운트 해주면서 스캔하였다. 그 후 만약 딕셔너리 key값에 해당하는 문자열이 나올 시에는 해당하는 key에 상응하는 value값을 answer 배열에 넣어주었다. answer 배열을 전부 구한 후에 return값을 정수로 반환해야했기에 각 요소x10**(len(answer)-i-1)을 ans에다가 더해주었다.
def solution(s):
dic = {}
number_s = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
for i in range(10):
dic[number_s[i]] = i
answer = []
i = 0
while i < len(s):
try:
answer.append(int(s[i]))
i += 1
except:
tmp = s[i]
while True:
try:
answer.append(dic[tmp])
i += 1
break
except:
i += 1
tmp += s[i]
ans = 0
for i in range(len(answer)):
ans += answer[i] * 10**(len(answer)-i-1)
return ans
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 행렬 테두리 회전하기(2021 Dev-Matching 웹 백엔드 개발자(상반기) (0) | 2021.12.11 |
---|---|
[프로그래머스] 2021 Dev-Matching 웹 백엔드 개발자(상반기) Lv.1 (0) | 2021.12.11 |
[프로그래머스] 피로도 (0) | 2021.12.11 |
[2021 카카오 채용 연계형 인턴쉽] 거리두기 확인 (0) | 2021.12.09 |
2021.12.02 순위검색(2021 카카오 블라인드 채용) (0) | 2021.12.02 |