-
반응형
안녕하세요! 알고리즘을 사랑하는 여러분, 반갑습니다. 오늘은 "시리얼코드" 문제를 다뤄보려고 합니다. 이 문제는 주어진 명령어를 처리하여 정렬하는 문제입니다. 자, 그럼 문제를 자세히 살펴보겠습니다.
문제 내용
주어진 명령어를 처리하여 정렬한 결과를 출력하는 문제입니다. 정렬 기준은 다음과 같습니다.
- 명령어의 길이가 짧은 것부터 정렬합니다.
- 숫자의 합이 작은 것부터 정렬합니다.
- 사전순으로 정렬합니다.
문제 이해하기
주어진 명령어를 순서대로 처리하여 정렬해야 합니다. 각 명령어에는 숫자가 포함되어 있는데, 해당 숫자들의 합을 계산하여 비교합니다. 또한, 명령어의 길이와 사전순으로도 정렬해야 합니다.
풀이 코드
pythonCopy code n = int(input()) guitar = [] for _ in range(n): count = 0 command = input() for c in command: if c.isdigit(): count += int(c) guitar.append((command, count)) guitar.sort(key=lambda x: (len(x[0]), x[1], x[0])) for g in guitar: print(g[0])
풀이 방법
주어진 입력을 순회하면서 각 명령어의 숫자 합을 계산하여 리스트에 저장합니다. 이때, 숫자 합을 계산하는 방법은 문자열의 각 문자를 순회하면서 숫자인지 확인하고, 숫자라면 해당 숫자를 누적하여 합을 계산합니다. 이후, 명령어와 숫자 합을 함께 튜플로 묶어서 리스트에 저장합니다. 그리고 리스트를 정렬하는데, 정렬 기준은 길이, 숫자 합, 명령어 순서대로 적용합니다. 마지막으로, 정렬된 결과를 출력합니다.
시간 복잡도
주어진 입력의 수를 N이라고 할 때, 각 명령어의 문자열을 순회하면서 숫자 합을 계산하므로 시간 복잡도는 O(NM)입니다. 여기서 M은 각 명령어의 길이입니다. 따라서, 입력의 크기에 선형적으로 증가하는 효율적인 알고리즘이라고 할 수 있습니다.
혹시 문제가 잘 안풀리고 답답하신가요? 아래를 눌러 백준 알고리즘 트랜드와 기출문제를 알아보세요! 이것만 알아도 네카라뿌십니다~
반응형'백준' 카테고리의 다른 글
파이썬 백준 알고리즘: 부등호 2529 (0) 2023.06.19 파이썬 백준 알고리즘: 빗물 트래핑 14719 (0) 2023.06.19 파이썬 백준 알고리즘 - 3진법 뒤집기 풀이 해석 (0) 2023.06.19 파이썬 백준 알고리즘 - 가장 많은 알파벳 찾기 풀이 해석 (1) 2023.06.19 파이썬 백준 알고리즘 - 인기 있는 책 찾기 풀이 해석 (0) 2023.06.19