공부중의 블로그

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

Programming Problems/Greedy 1

N digit 숫자를 K회 스왑해서 최댓값 만들기

ex ) 8799, K = 2 에서 ans = 9987 나이브하게는 모든 경우의 수를 만들어서 (N^2 ^ K) 스왑하고, 그 결과들 중에서 가장 큰 것을 찾는다 ( & data ) 이렇게 만들어서 한번에 하나씩 비교할 수 있을 듯. 그렇게 하면 비교가 N 시간이 걸리므로 O(N * N^2 ^ K) 시간이 걸리겠다. 여기서 더 가려면 규칙성을 찾는 그리디 알고리즘이나, 동적 계획법으로 풀게 되겠다. 자료구조를 이용한 해법은 없는 것 같다. 동적 계획법이 생각난다. 아니 그리디 솔루션인가.. 그리디 솔루션을 살펴보자. 매 단계에서 자신이 할 수 있는 최선을 다하면 최대 결과가 만들어질까? 모든 숫자가 역순으로 정렬된 것이 아닌 이상 최대 뒤집기를 찾을 수 있다.동적 계획법은 M이 n자리 10진법 수이기 때..

Programming Problems/Greedy 2018.04.22
이전
1
다음
더보기
프로필사진

공부중의 블로그

  • 분류 전체보기 (266)
    • 2022 (3)
    • 2020 (23)
      • 주제 (0)
      • 잡기 (10)
      • 2020 (13)
    • 2019 (75)
      • 프로그래밍 (2)
      • c++ (27)
      • bixby (0)
      • Python (0)
      • 사설 (7)
      • 공지 (2)
      • 일기 (7)
      • 블록체인 (1)
      • 현명한 삶 (17)
      • 투자 (10)
      • SW (1)
      • 독서록 (1)
    • 2018 (43)
      • 201810 (0)
      • Investing (9)
      • JS (0)
      • 투자 (0)
      • 계획 (1)
      • 독서록 (9)
      • 사색 (8)
      • 일기 (1)
      • 사업 (0)
      • Notes (0)
      • knowledges (1)
      • 재무관리 (0)
      • 메이플 (14)
      • 계획과 지식 (0)
    • Programming Problems (65)
      • 일기 (1)
      • Arrays (12)
      • Strings (12)
      • list, tree (3)
      • Hashing (2)
      • 힙 (1)
      • Preprocessing (3)
      • Bit manipulations (2)
      • Greedy (1)
      • Dynamic Programming (4)
      • Divide&Conquer (1)
      • Recursive (6)
      • Graph (7)
      • Digits (2)
      • Number theory (3)
      • Probability (1)
      • Coodinates & physics (1)
      • 정보처리기사 (1)

Tag

최근글과 인기글

  • 최근글
  • 인기글

최근댓글

공지사항

  • 투자철칙
  • 삼사일행 하고 계산적으로 살자

페이스북 트위터 플러그인

  • Facebook
  • Twitter

Archives

Calendar

«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

방문자수Total

  • Today :
  • Yesterday :

Copyright © Kakao Corp. All rights reserved.

티스토리툴바