saurus2
Saurus2
saurus2
전체 방문자
오늘
어제
  • 분류 전체보기
    • 개발
      • AJAX
    • ML Ops
    • Profile
    • 음식점
    • 배낭여행
    • 컴퓨터공학
      • 알고리즘 공부
      • C++
      • Sever 스터디
      • Java spring
      • 알고리즘 _ 문제해결
      • 딥러닝
      • Java 정리
      • Python
      • LeetCode 1000
      • Machine Learning Study
      • Sign language Detection Pro..
      • LeetCode Solutions
    • 비콘
    • 데일리 리포트
    • 유학일기
      • 영어 공부
      • Daily
    • AI Master Degree
      • Data Mining
      • AI and Data engineering
      • Math Foundations for Decisi..
      • Natural Language Processing

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 온라인저지
  • BFS
  • DFS
  • 취준
  • Python
  • LeetCode
  • 알고리즘
  • 릿코드
  • 백준
  • 개발자 취업준비
  • c++
  • 취업준비
  • 딥러닝
  • two pointer
  • 파이썬
  • 딕셔너리
  • 문제해결능력
  • 알고리즘문제해결
  • 리트코드
  • 개발자

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
saurus2

Saurus2

컴퓨터공학/LeetCode 1000

[LeedCode] 423. Reconstruct Original Digits from English 파이썬 Medium

2021. 11. 3. 04:42

문제 설명:

문자열이 주어진다. 문자열에는 0 부터 9까지 나타내는 단어들이 들어있다.
그 단어들은 섞여 있어서 숫자를 알아볼 수 없다.
이 숫자들을 알아내여, 오름차순 순으로 출력해야한다.

문제 풀이:

숫자들은 개수에 제한없이 문자열에 저장되있다.
특정 알파벳의 개수를 이용하여 숫자들을 재구성해야한다.

1. 0 부터 9까지의 숫자의 영어단어들을 봤을때, 하나의 숫자에만 들어가는 알파벳이있다.
2. z, w, u, x, g 다섯개가 오직 하나의 단어에만 들어가는 알파벳이다. zero, two, four, six, eight.
3. 문자 스트링에서 위 다섯개의 알파벳 개수를 센다. ( 0, 2, 4, 6, 8 ) 의 개수를 의미하게 된다.
4. 그리고 five는 f개수를 세서 four의 개수를 빼면 도출할 수 있다.
5. 마찬가지로 seven : v 개수 - f(five),
three : r 개수 - z(zero) - u(four),
one : o 개수 - z(zero) - w(two) - u(four) 
nine : n 개수 - v(seven) - o(one) 을 빼서 2로 나눠야한다. (n 이 nine에는 두개가 존재)
6. 그리고 각각 개수에 알파벳을 곱해서 리턴한다.

423. Reconstruct Original Digits from English

Given a string s containing an out-of-order English representation of digits 0-9, return the digits in ascending order.

 

Example 1:

Input: s = "owoztneoer" Output: "012"

Example 2:

Input: s = "fviefuro" Output: "45"

 

Constraints:

  • 1 <= s.length <= 105
  • s[i] is one of the characters ["e","g","f","i","h","o","n","s","r","u","t","w","v","x","z"].
  • s is guaranteed to be valid.

소스코드:

class Solution:
    def originalDigits(self, s: str) -> str:
        uniq = ['z', 'w', 'u', 'x', 'g']
        num = []
        z = s.count('z')                # zero
        w = s.count('w')                # two
        u = s.count('u')                # four
        f = s.count('f') - u            # five
        x = s.count('x')                # six
        v = s.count('v') - f            # seven
        g = s.count('g')                # eight
        r = s.count('r') - z - u        # three
        o = s.count('o') - z - w - u    # one
        n = int((s.count('n') - v - o) // 2)
        return '0' * z + '1' * o + '2' * w + '3' * r + '4' * u + '5' * f \
            + '6' * x + '7' * v + '8' * g + '9' * n

'컴퓨터공학 > LeetCode 1000' 카테고리의 다른 글

[LeedCode] 53. Maximum Subarray 파이썬 Easy  (0) 2021.11.04
[LeedCode] 175. Combine Two Tables SQL Easy  (0) 2021.11.03
[LeetCode] 3. Longest Substring Without Repeating Characters 파이썬 Medium  (0) 2021.11.02
[LeedCode] 1041. Robot Bounded In Circle 파이썬 Medium  (0) 2021.11.02
[leedCode] 7. Reverse Integer 파이썬 Medium  (0) 2021.11.02
    '컴퓨터공학/LeetCode 1000' 카테고리의 다른 글
    • [LeedCode] 53. Maximum Subarray 파이썬 Easy
    • [LeedCode] 175. Combine Two Tables SQL Easy
    • [LeetCode] 3. Longest Substring Without Repeating Characters 파이썬 Medium
    • [LeedCode] 1041. Robot Bounded In Circle 파이썬 Medium
    saurus2
    saurus2
    Simple is Best

    티스토리툴바