블럭을 모아 성장한 나의 캐릭터 모습이다. 2주차에는 어떤 모습으로 변할지 기대 된다!!
import sys
input = sys.stdin.readline
n = int(input().rstrip())
# 맛 정도 리스트 초기화
tastes = list(map(int , input().split()))
def taste_fnc(n, tastes):
# 최고 맛도리 인덱스 찾기
max_taste_idx = tastes.index(max(tastes))
for i in range(max_taste_idx, n-1):
if tastes[i] < tastes[i+1]:
return 0
for i in range(max_taste_idx -1, 0, -1):
if tastes[i] < tastes[i-1]:
return 0
return sum(tastes)
print(taste_fnc(n, tastes))
맛정도가 가장 높은 재료 기준으로 오른쪽, 왼쪽으로 갈수록 점점 맛정도가 작아져야한다.
맛정도를 리스트로 입력을 받은 후 최고 맛정도가 위치한 인덱스를 찾아 왼쪽, 오른쪽을 나누어 바로 옆 값과 비교해 나가면 된다!
시간복잡도는 O(n)
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
arr = list(map(int, input().split()))
# 첫번째 정렬
sorted_arr = sorted(arr, key=lambda x: (-(bin(x).count('1')), -x))
print(sorted_arr[k-1])
2진수로변환 후 1의 숫자가 더 많은 기준으로 내림차순, 1의 개수가 같은면 변환 전 10진수 기준으로 내림차순으로 정렬한다.
배운점!
lambda 식에서 음수로 정렬하면 내림차순인 이유!
[3, 2, 1]를 오름차순 => [1, 2, 3]
음수 취하면 [-3, -2 ,-1]을 오름차순 => [-3, -2, -1]
따라서 원래의 값으로 돌리면 [3, 2, 1]같이 내림차순으로 정렬됨.