일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JAVA 11
- BOJ
- baekjoon
- 자바
- java
- 개념
- 헤드퍼스트 디자인패턴
- level1
- 명품 자바 프로그래밍
- 기초
- 백준
- programmers
- GROUP BY 절
- Java11
- Python 3
- SELECT 절
- HAVING 절
- 코딩테스트
- 응용
- 기본
- SQLD / SQLP
- Python
- 공공데이터
- pypy3
- 이론
- Codeup
- 기초100제
- Codeforces Round #802 (Div. 2)
- 단계별로 풀어보기
- 파이썬
- Today
- Total
Development Project
[ Programmers - 06/26 ] - 숫자 문자열과 영단어(Python)_Level1 본문
[ Programmers - 06/26 ] - 숫자 문자열과 영단어(Python)_Level1
나를 위한 시간 2022. 6. 26. 15:38- 문제링크
https://programmers.co.kr/learn/courses/30/lessons/81301?language=python3
코딩테스트 연습 - 숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자
programmers.co.kr
- 문제


- 시행착오
zero를 빼먹어서 런타임에러가 생긴 것 말고는 시행착오는 없었다. 문제를 항상 잘 읽어야지 하는데 계속 차분히 문제를 보는 습관을 길러야겠다.
- 문제분석
s : 영어와 숫자가 혼합된 문자열
을 입력받아, 영어에 대응되는 숫자로 변경하는 프로그램을 작성하는 문제이다. 각 영어로된 숫자단어를 발견하면 치환하는 방식으로 계산하면 된다.
- 각 파라미터의 유형
s = "one4seveneight"
<조건>
→ 1 ≤ s의 길이 ≤ 50
→ s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않음
→ return 값이 1이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어짐
=> 영어와 숫자가 혼합된 문자열이며, 각 영단어들이 겹쳤을때 다른 숫자로 착각할 수 있는 배열의 조합은 없다고 보여진다.
- 문제접근
※ 작성자가 문제를 보고 든 생각을 차례대로 써본 것이다. 이 순번은 정답이 아니며 매번 다른 생각을 해보길 권장한다.
1) 우선 컴퓨터는 1이 "one"이고 2가 "two" 등등 이런 것들을 모르므로 이를 리스트로 담아주었다. 딕셔너리로 key를 숫자 value를 영단어로 하는것도 한 방법이지만, 리스트는 값을 더 넣지않고도 인덱스로 구분이 가능하니 더 간단할거라 생각하였다.
l=["one","two","three","four","five","six","seven","eight","nine"]
2) 전 포스팅에서도 사용했던 것 처럼 각 문자열이 포함되면 치환하도록 코딩하는 것은 반복문과 in을 사용하면 가능하다.
for i in l: #l은 위에 코딩한 변수 l과 동일하다
while i in s:
s = s.replace(i,str(l.index(i)))
- 최종코드
def solution(s):
l=["zero","one","two","three","four","five","six","seven","eight","nine"]
for i in l:
while i in s:
s = s.replace(i,str(l.index(i)))
return int(s)
'CodingTest > Programmers' 카테고리의 다른 글
[ Programmers - 06/25 ] - 신규 아이디 추천(Python)_Level1 (0) | 2022.06.26 |
---|---|
[ Programmers - 06/24 ] - 로또의 최고 순위와 최저 순위(Python)_Level1 (0) | 2022.06.24 |
[ Programmers - 06/24 ] - 신고결과받기(Python)_Level1 (0) | 2022.06.24 |