[Level 1] K번째 수
def solution(array, commands):
answer = []
for com in range(len(commands)):
i, j, k = commands[com][0], commands[com][1], commands[com][2]
result = array[i-1:j]
result.sort()
answer.append(result[k-1])
return answer
[Level 2[ 가장 큰 수
* 문자형으로 변환하는 함수: str()
* 리스트 내림차순 정렬: 리스트.sort(reverse=True)
<문제 풀이 핵심 포인트>
1. x*3 (문자열을 3번 뒤에 더한다.)
- 문자열에서의 대소비교는 문자열 첫 번째 인덱스를 아스키 숫자로 바꿔 비교하고, 같으면 다음 인덱스를 비교하는 형식
- 예를 들어 [3, 310, 30] 이 있다면 원래대로 내림차순 정렬하면 310, 30, 3이 되지만 3이 가장 앞에 와야 가장 큰 수가 만들어질 수 있음
- x*3을 하게 되면 [3, 310, 30] -> [333, 310310310, 303030] 이렇게 된다. 자릿수를 맞춰 비교하기 위함이다.
- 문자열을 3번 쓰는 이유는 문제 조건에서 입력되는 숫자의 최대 크기가 1000미만이라 제시했기 때문임
2. 마지막에 str을 int로 바꾸었다가 다시 str로 바꾸기
- '000' 이나 '00' 등이 나올 경우 '0'으로 줄여서 반환하기 위함
def solution(numbers):
answer = ''
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x*3, reverse=True)
answer = str(int(''.join(numbers)))
return answer
[프로그래머스 Lv.2][정렬] 가장 큰 수 (python)
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중
yuna0125.tistory.com
[Level 2] H-Index
def solution(citations):
answer = 0
# 정렬하면 0, 1, 3, 5, 6
citations.sort()
n = len(citations) # 길이는 5
# 부터 0까지 -1씩 감소하는 반복문
for i in range(n):
h_index = n-i # 가장 큰 h를 구하는 것이므로 가장 큰 것부터 구해봄 (5 빼기 0은 5)
# 정렬했던 citations의 인덱스 앞부터 h_index와 비교
# h_index보다 citations 원소 값이 같거나 커지는 순간 종료
if citations[i] >= h_index:
answer = h_index
break
return answer
프로그래머스 문제 풀이 H-Index
문제 URL H-Index Contents 문제 지문 파악하기 구르미의 알고리즘 풀이 문제 지문 파악하기 이번에도, 입력을 통해서 문제를 파악해보도록 하겠습니다. 문제의 입력은 이렇습니다. 입렵: citations = [3,
gurumee92.tistory.com
'Coding Test > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 알고리즘 고득점 Kit ✅ 완전탐색 (~ing) (0) | 2025.02.25 |
---|---|
[Python] 프로그래머스 알고리즘 고득점 Kit ✅ 탐욕법 (Greedy) (~ing) (0) | 2025.02.20 |
[Python] 프로그래머스 알고리즘 고득점 Kit ✅ 해시 (~ing) (1) | 2024.09.29 |
[MySQL] 프로그래머스 Level 4, 5 문제 풀이 (20문제, 240715 업데이트) (3) | 2024.07.15 |
[MySQL] 프로그래머스 Level 3 문제 풀이 (21문제, 240612 업데이트) (1) | 2024.06.12 |