[Q3] 로그파일 재정렬

2022. 12. 1. 10:32·코딩테스트/알고리즘

[리트코드 937] Reorder Log Files

로그를 재정렬하라. 기준은 다음과 같다.
1. 로그의 가장 앞부분은 식별자다.
2. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다.
3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일한 경우 식별자 순으로 한다.
4. 숫자 로그는 입력 순서대로 한다.

 

먼저 로그를 읽어 숫자로그와 문자로그로 분류했다.

def reorderLogFiles(self, logs: List[str]) -> List[str]:

    alp_logs = []
    num_logs = []

    for log in logs:
        log = log.split()
        index = log[0]
        judge = ''.join(log[1:])
        string = ' '.join(log[1:])

        log = [index, string]

        if judge.isdigit():
            num_logs.append(log)
        else:
            alp_logs.append(log)

 

문자로그는 숫자로그보다 앞에 온다하였으므로, alp_logs + num_logs 이지만, 그전에 문자로그를 정렬해야한다.

조건은 문자 순으로 정렬하되, 같을경우 식별자 순이다.

alp_logs.sort(key=lambda x: (x[1], x[0]))

 

그 다음 문자 로그뒤에 숫자로그 리스트를 붙인 후, 출력 조건에 맞도록 바꾸어준다.

logs = alp_logs + num_logs
        
for i in range(len(logs)):
    logs[i] = ' '.join(logs[i])

return logs

 

정리하면 다음과 같다.

def reorderLogFiles(self, logs: List[str]) -> List[str]:

    alp_logs = []
    num_logs = []
    answer = []

    for log in logs:
        log = log.split()
        index = log[0]
        judge = ''.join(log[1:])
        string = ' '.join(log[1:])

        log = [index, string]

        if judge.isdigit():
            num_logs.append(log)
        else:
            alp_logs.append(log)

    alp_logs.sort(key=lambda x: (x[1], x[0])) 

    logs = alp_logs + num_logs

    for i in range(len(logs)):
        logs[i] = ' '.join(logs[i])

    return logs

'코딩테스트 > 알고리즘' 카테고리의 다른 글

[Q6] 가장 긴 팰린드롬 부분 문자열  (0) 2022.12.01
[Q4] 가장 흔한 단어  (0) 2022.12.01
[Q2] 문자열 뒤집기  (0) 2022.11.30
[Q1] 유효한 팰린드롬  (0) 2022.11.30
코딩테스트 연습 기록  (0) 2022.11.30
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [Q6] 가장 긴 팰린드롬 부분 문자열
  • [Q4] 가장 흔한 단어
  • [Q2] 문자열 뒤집기
  • [Q1] 유효한 팰린드롬
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    mapstruct
    예외
    REST API
    클러스터
    리액트
    spring boot
    스프링부트
    오블완
    인스타그램
    Java
    MSA
    클론코딩
    react
    OpenAI API
    Entity
    스프링 부트
    백준
    chat GPT
    쿠버네티스
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[Q3] 로그파일 재정렬
상단으로

티스토리툴바