알고리즘
3일차(2.17)
traveler_JH
2023. 2. 17. 17:45
937. Reorder Data in Log Files
의 배열이 제공 logs됩니다. 각 로그는 공백으로 구분된 문자열이며 첫 번째 단어는 식별자 입니다.
다음과 같은 두 가지 유형의 로그가 있습니다.
편지 로그: 모든 단어(식별자 제외)는 소문자 영어로 구성됩니다.
숫자 로그: 식별자를 제외한 모든 단어는 숫자로 구성됩니다.
다음과 같이 로그 순서를 변경합니다:
- 문자 로그는 모든 숫자 로그 앞에 온다.
- 문자 로그는 내용에 따라 사전순으로 정렬됩니다. 내용이 같으면 식별자를 기준으로 사전순으로 정렬합니다.
- 숫자 로그는 상대적 순서를 유지합니다.
로그의 최종 순서를 반환합니다.
- 예시
예 2:제약:입력: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"] 출력: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"] 설명: 레터로그 내용이 다 다르기 때문에 순서는 "아트캔", "아트제로", "자체키트디그" 입니다. 숫자 로그는 "dig1 8 1 5 1", "dig2 3 6"의 상대적인 순서를 갖습니다.
- 1 <= logs.length <= 100
- 3 <= logs[i].length <= 100
- 의 모든 토큰은 단일 공백 logs[i]
- 으로 구분됩니다 .
- logs[i]
- 식별자와 식별자 뒤에 적어도 한 단어가 있음을 보장합니다.
- 입력: logs = ["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"] 출력: ["g1 act car","a8 act 동물원","ab1 오프 키독","a1 9 2 3 1","zo4 4 7"]
- 예 1:
Pseudo Code
logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
- 요소의 첫번째는 식별자로 두번째부터 식별
- 두번째가 단어로그인지 숫자로그인지 확인
- 단어 로그는 모든 숫자로그의 앞에 있다는것을 확인
- 단어로그 정렬
Code
logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
letters, nums = [], []
for i in logs:
if i.split()[1].isdigit():
nums.append(i)
else:
letters.append(i)
letters.sort(key = lambda x :(x.split()[1::],x.split()[0]))
return letters+nums
느낀점
처음 문제만 봤을때는 하나도 이해가 않되서 여러번 고민했던거같다.
물론 책을 보고 이게 이거구나 라고 알았던거같다.
좀더 독해력을 키워야 할듯하다.