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
  • 취업준비
  • 취준
  • 릿코드
  • 알고리즘문제해결
  • Python
  • 문제해결능력
  • 리트코드
  • LeetCode
  • 딥러닝
  • 온라인저지
  • 개발자
  • c++
  • DFS
  • two pointer

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
saurus2

Saurus2

컴퓨터공학/LeetCode 1000

[LeetCode] 937. Reorder Data in Log Files - Easy 파이썬 sorted key 함수

2021. 10. 30. 14:44

937. Reorder Data in Log Files

문제 해석 :

두가지 단어로 구성되어있는 리스트가 주어진다.
Letter-logs와 Digit-logs가 있다. 

Letter-logs : 식별자외에는 모두 소문자 영어 문자로 되어있다.
Digit-logs : 식별자 외에는 모두 숫자로 되어있다.

정렬 규칙:

1. Letter-logs는 순서상 Digit-logs보다 앞에 있다.
2. Letter-logs는 식별자보다 내용이 먼저 정렬되고, 내용이 같으면 식별자 순으로 정렬된다.
3. Digit-logs는 그대로 기존 정렬을 유지한다.

풀이 방법:

1. 식별자와 내용을 분리한다.
2. key로 사용할 함수를 생성한다.
3. 문자와 숫자 단어들에서 식별자를 제외하고, 무조건 문자, 숫자만 나오기 때문에 맨 앞자리만 확인해도 된다.
- 식별자에는 특별한 규칙이 없다. 내용만 확인하면 된다.
4. 내용순으로 정렬되고 그 다음 식별자 순으로 정렬 되기 때문에, 내용의 맨 앞자리로 확인하고 문자면 리턴값을 내용, 식별자로 지정한다.
5. 문자 단어가 먼저 정렬되어야해서 리턴값의 맨앞에 숫자 단어보다 작은 숫자를 리턴한다.
6. 숫자는 기존 정렬을 유지하기 때문에 문자 단어보다 큰값과 같이 리턴한다.

You are given an array of logs. Each log is a space-delimited string of words, where the first word is the identifier.

There are two types of logs:

  • Letter-logs: All words (except the identifier) consist of lowercase English letters.
  • Digit-logs: All words (except the identifier) consist of digits.

Reorder these logs so that:

  1. The letter-logs come before all digit-logs.
  2. The letter-logs are sorted lexicographically by their contents. If their contents are the same, then sort them lexicographically by their identifiers.
  3. The digit-logs maintain their relative ordering.

Return the final order of the logs.

 

Example 1:

Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"] Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"] Explanation: The letter-log contents are all different, so their ordering is "art can", "art zero", "own kit dig". The digit-logs have a relative order of "dig1 8 1 5 1", "dig2 3 6".

Example 2:

Input: logs = ["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"] Output: ["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]

 

Constraints:

  • 1 <= logs.length <= 100
  • 3 <= logs[i].length <= 100
  • All the tokens of logs[i] are separated by a single space.
  • logs[i] is guaranteed to have an identifier and at least one word after the identifier.
class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
    	# key 에 사용할 함수 
        def get_key(log):
            id_, rest = log.split(" ", maxsplit=1)
            if rest[0].isalpha():
            	# 문자 단어는 0을 추가해서 리턴
                return (0, rest, id_)
            else:
            	# 숫자 단어는 1을 추가해서 그대로 리턴
                return (1, )
        
        return sorted(logs, key=get_key)

 

 

 

 

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

[LeedCode] 56. Merge Intervals 파이썬 Medium  (0) 2021.10.31
[LeetCode] 1710. Maximum Units on a Truck 파이썬 easy 정렬  (0) 2021.10.30
[LeetCode/릿코드] - 10. Regular Expression Matching - (Hard/하드)  (0) 2021.07.31
[LeetCode/릿코드] - 4. Median of Two Sorted Arrays - (Hard/하드)  (0) 2021.07.28
[LeetCode/릿코드] - 238. Product of Array Except Self (Medium/미디엄)  (0) 2021.07.26
    '컴퓨터공학/LeetCode 1000' 카테고리의 다른 글
    • [LeedCode] 56. Merge Intervals 파이썬 Medium
    • [LeetCode] 1710. Maximum Units on a Truck 파이썬 easy 정렬
    • [LeetCode/릿코드] - 10. Regular Expression Matching - (Hard/하드)
    • [LeetCode/릿코드] - 4. Median of Two Sorted Arrays - (Hard/하드)
    saurus2
    saurus2
    Simple is Best

    티스토리툴바