21.4.26

알고리즘 16일차

프로젝트.. 기업협업.. 너무 정신없었다. 이제는 좀 알고리즘도 풀어보고 그래야겠다.

1. 문제

주식 가격 배열에서 가장 이득이 높게 파는 법

2. 접근 방법

  • 가장 작은 배열의 요소와 순서상 그 배열보다 먼 것에 있는 것을 계산(뺄셈)
  • 이렇게 풀어야 무조건 작은 수와 순서 없이 계산되지 않음
  • 조건을 걸었기 때문에 작은 수가 있다 하더라도 순서상 계속 작아지면(작은수가 가장 마지막에 있다면) 성사 되지 않음.

3. 코드

def maxProfit(prices):
  min_price = min(prices)
  result = 0
  for i in range(len(prices)-1):
  # 배열에 따른 반복문
    if prices[i] > prices[i+1]:
      continue
      # 배열 상 순서가 뒤에꺼보다 앞에꺼가 더 크면 넘김
    if prices[i] < prices[i+1]:
      result = prices[i+1] - min_price
  return result
print(maxProfit([7,1,5,3,6,4]))

1. 문제

같은 알파벳의 모음끼리 모아서 리스트 만들어보기

2. 접근 방법

  • 처음에 배열로만 접근 : 배열을 해체한 쇼만 함
  • 참고 코드 보고 확인한 결과 : 쌍을 이룬다, 튜플을 사용한다.

3. 코드

def groupAnagrams(strs):
  dic = {}
  # why? : 쌍을 이룬다. 키 : 값으로 생각하는 발상을 했어야 했다. 한 수 배웠다.

  for i in sorted(strs):
    key = tuple(sorted(i))
    # why tuple : sorted해서 정렬한 후 알파벳 순서를 통일 시키기 위해서
    dic[key] = dic.get(key, []) + [i]
    # dict.get() 메서드는 특정 키에 대한 값을 리턴
  return list(dic.values())

좋은 웹페이지 즐겨찾기