[프로그래머스]숫자문자열과영단어-Python3

2021. 7. 30. 19:45·코딩테스트/프로그래머스
728x90
반응형

※2021 카카오 채용연계형 인턴십※

https://tech.kakao.com/2021/07/08/2021-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%9D%B8%ED%84%B4%EC%8B%AD-for-tech-developers-%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%B4%EC%84%A4/ 

 

2021 카카오 인턴십 for Tech developers 코딩 테스트 해설

2021년 카카오의 여름 인턴십의 첫 번째 관문인 코딩 테스트가 지난 2021년 5월 8일에 4시간에 걸쳐 진행되었습니다. 이번 인턴 코딩 테스트에서는 5문제가 출제되었습니다. 이전과 동일하게 쉬운

tech.kakao.com

{{문제}}

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

숫자 0 1 2 3 4 5 6 7 8 9
영단어 zero one two three four five six seven eight nine

※제한사항※

  • 1 ≤ s의 길이 ≤ 50
  • s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

{{입출력 예}}

s result
"one4seveneight" 1478
"23four5six7" 234567
"2three45sixseven" 234567
"123" 123

{{입출력 예 설명}}

입출력 예 #1

  • 문제 예시와 같습니다.

입출력 예 #2

  • 문제 예시와 같습니다.

입출력 예 #3

  • "three"는 3, "six"는 6, "seven"은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.
  • 입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.

입출력 예 #4

  • s에는 영단어로 바뀐 부분이 없습니다.

※제한시간 안내※

  • 정확성 테스트 : 10초

{{풀이}}

def solution(s):
    res = ''
    li = []
    #1 문자와 숫자 분리하기
    res = sepStrDigit(res, s)

    #2 문자 분리하기
    res = res.split()
    li = sepStrings(res, li)
    
    #3 문자 숫자에 대응하기
    li = matchStr2Digit(li)
    
    #4 결과 리턴하기
    return int(''.join(li))

def sepStrDigit(res, s): # 문자와 숫자 분리하기
    for i in range(len(s)):
            if s[i].isdigit() == 0: #str
                res += s[i]
            elif s[i].isdigit() == 1: #digit
                res = res + ' ' + s[i] + ' '
    return res

def sepStrings(res,li): # 문자 분리하기
    for i in range(len(res)):
        if res[i].isdigit():
                li.append(res[i])
        else:
            for j in dic.values():
                if j in res[i]:
                    li.append(j)
                    li.append(res[i].replace(res[i], j))
    #print(list(set(li)))
    li = list(dict.fromkeys((li)))
    return li

def matchStr2Digit(li): # 문자 숫자에 대응하기
    for i in range(len(li)):
        for j in dic.values():
            if li[i] == j:
                #li.append(get_key(j))
                #del li[i]
                li[i] = str(get_key(j))
                break
    return li

def get_key(val): # dic의 value에 대응하는 key 찾아 리턴
    for key, value in dic.items():
         if val == value:
            return key
dic = {0:'zero', 1:'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine'}

##걸린 시간: 약 1시간

##테스트용은 맞았는데, 실채점에서 틀렸다ㅠ...왜 틀렸는지 고민 중😱😱

##회고

코테를 풀 때는 어떤 순서로 풀어나가려 했는지 주석으로 표기해둬야 흐름을 잊지 않는다.

선택한 해당 언어에 대한 이해도와 지식이 많을수록 좋다는 점과 개념을 탄탄히 해야 한다는 것.한번에 쭉 풀기보다 중간 중간 풀면서 원하는 중간 결과가 잘 나오는지 확인하며 진행할 것.

###풀면서 참고한 링크:

https://m31phy.tistory.com/130 

 

[Python] 리스트 중복 제거 (순서 유지 X, 순서 유지 O)

Python에서 리스트의 중복을 제거하는 경우, 크게 두 가지 경우를 생각해볼 수 있다. • 리스트의 중복만을 제거하는 경우 ( 기존 리스트의 순서는 고려 x) • 리스트의 중복을 제거하되 기존 리스

m31phy.tistory.com

https://billnairk.tistory.com/100 

 

[Python] 파이썬 리스트의 수정과 삭제

[ 파이썬 리스트의 수정과 삭제 ] 파이썬 리스트 안의 요소 값을 수정 또는 삭제 하는 방법을 알아보자. [ 리스트 값 수정 ] 1. 한개 값 수정 - 리스트의 수정할 값을 인덱싱 하여 수정한다. 2. 여

billnairk.tistory.com

 

728x90
반응형
저작자표시 (새창열림)

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[프로그래머스/Python] 코딩테스트연습 - DFS/BFS - 여행경로  (2) 2024.10.08
[프로그래머스]위클리챌린지1주차-부족한 금액 계산하기  (2) 2021.08.03
[프로그래머스]정수내림차순구하기-Python3  (2) 2021.07.29
[프로그래머스]소수개수구하기-Python3  (0) 2021.07.29
[프로그래머스]약수의합-Python3  (0) 2021.07.29
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • [프로그래머스/Python] 코딩테스트연습 - DFS/BFS - 여행경로
  • [프로그래머스]위클리챌린지1주차-부족한 금액 계산하기
  • [프로그래머스]정수내림차순구하기-Python3
  • [프로그래머스]소수개수구하기-Python3
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (3)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
[프로그래머스]숫자문자열과영단어-Python3
상단으로

티스토리툴바