이 영역을 누르면 첫 페이지로 이동
쿄코코 블로그의 첫 페이지로 이동

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

백준 17451(평행 우주) - Python(파이썬) - 그리디 알고리즘

  • 2022.06.26 17:33
  • [백준] Python,Java로 풀기📖/그리디
    반응형
     

    17451번: 평행 우주

    행성 1에 가기 위해 필요한 것보다 세 배의 속도로, 행성 2의 경우 두 배의 속도로 이동하면, 지구에서는 900의 속도만 쌓으면 된다.

    www.acmicpc.net

    예제 풀이

    연산은 마지막 행성부터 시작한다. - ( 속도의 최솟값을 구할 때 마지막 지구에 도착할 땐느 그 행성의 속도와 동일한 값이면 되기 때문 )

     

    마지막 행성부터 시작해서

    1️⃣ 현재 속도( result )가 행성 이동시 필요한 최소 속도( vi )보다 작거나 같은 경우 ( result < vi ) : result = vi 

    2️⃣ 현재 속도(result)가 행성 이동시 필요한 최소 속도보다 큰 경우에 행성 속도가 양의 배수가 아닌 경우 ( result > vi  ) 

      : (행성 이동시 필요한 최소 속도를 현재 속도로 나눈 몫을 구한 후 +1 ) 을 한 값에 필요한 최소 속도를 곱한다. 

        (vi  // result +1 ) * vi  을 해주어서 vi 보다 크고 vi 의 양의 배수로 만들기

    행성번호 1 2 3 4 5
    행성 이동 시 필요한
    최소 속도(v)
    300 400 500 400 300
    행성의 속도 900
    ( 2️⃣ 최소 속도가 800보다 작으므로 { (800 //300)+1 }X300 = 900 )
    800
    ( 2️⃣ 최소 속도가 500보다 작으므로 {(500//400)+1} X 400 = 800 )
    500
    (1️⃣ 최소 속도가 400보다 크므로 최소 속도 500으로 만들기)
    400
    (1️⃣ 최소 속도가 300보다 크므로 최소 속도 400으로 만들기)
    300
      ⬅️ ⬅️ ⬅️ ⬅️  

    즉, 900부터 시작해서 줄여 나가면서 300으로 지구에 도착하면 된다.

     

    문제 풀이

    ① 현재의 속도가 vi보다 작은 경우 : result = vi
    ② 현재의 속도가 vi보다 큰 경우 : result =  (result // vi + 1 ) * vi

    💻 Python( 파이썬) 

    import sys
    n = int(sys.stdin.readline())
    v = list(map(int,sys.stdin.readline().split()))
    #역순으로 진행해야하므로
    v.reverse()
    
    result =0
    for i in v:
    	#vi보다 작거나 같은 경우
        if result<=i:
            result = i
        #vi보다 큰 경우 vi의 배수가 아닌 경우 -> True 
        #result%i > result%i!=0와 동일
        if result%i:
            result = (result // i+1)*i
    
    print(result)

     

    반응형

    '[백준] Python,Java로 풀기📖 > 그리디' 카테고리의 다른 글

    백준 11000(강의실 배정) - Python(파이썬) - 그리디,정렬(heap, lambda,Comparator)  (0) 2022.06.08
    백준 19941(햄버거 분배 ) - Python(파이썬) - 그리디  (0) 2022.06.03
    백준 2864(5와 6의 차이) - Python(파이썬)  (0) 2022.05.17
    백준- 11399( ATM )- Python(파이썬)  (0) 2022.05.11

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 백준 11000(강의실 배정) - Python(파이썬) - 그리디,정렬(heap, lambda,Comparator)

      백준 11000(강의실 배정) - Python(파이썬) - 그리디,정렬(heap, lambda,Comparator)

      2022.06.08
    • 백준 19941(햄버거 분배 ) - Python(파이썬) - 그리디

      백준 19941(햄버거 분배 ) - Python(파이썬) - 그리디

      2022.06.03
    • 백준 2864(5와 6의 차이) - Python(파이썬)

      백준 2864(5와 6의 차이) - Python(파이썬)

      2022.05.17
    • 백준- 11399( ATM )- Python(파이썬)

      백준- 11399( ATM )- Python(파이썬)

      2022.05.11
    다른 글 더 둘러보기

    정보

    쿄코코 블로그의 첫 페이지로 이동

    쿄코코

    • 쿄코코의 첫 페이지로 이동

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (168)
      • Python (24)
        • 😈 99클럽 코테 스터디 4기 TIL (23)
        • 궁금한거 정리 (1)
      • SQL (16)
        • HackerRank (15)
      • [백준] Python,Java로 풀기📖 (71)
        • 정렬(Sorting) (6)
        • 그리디 (5)
        • 문자열 (7)
        • 수학 (3)
        • DFS&BFS (10)
        • 구현 (4)
        • 다이나믹 (17)
        • 이분탐색 (1)
        • 자료구조 (10)
        • 최단거리 (5)
        • 인덱스트리 (0)
      • [프로그래머스]Python,Java로 풀기 (6)
        • Level 1 (4)
        • Level 2 (2)
      • Study Platform📚 (25)
        • (운영체제) - 블로그 및 강의 참고 (0)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
      • 까먹을까봐 적는 것들 (4)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 백준
    • TiL
    • 항해99
    • 티스토리챌린지
    • 오블완
    • 코딩테스트준비
    • 프로그래머스
    • 99클럽

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. © 쿄코코. Designed by Fraccino.

    티스토리툴바