250x250
250x250
JinSeopKim
Hello World!
JinSeopKim
전체 방문자
오늘
어제
  • 분류 전체보기 (168)
    • Artificial intelligence (14)
      • DeepDiveToAI (3)
      • Pytorch (3)
      • Etc (8)
    • Back-end (19)
      • Spring (10)
      • JPA (9)
    • Language (24)
      • Python (3)
      • Java (11)
      • Swift (10)
    • Math (4)
      • Linear Algebra (4)
    • CodingTest (79)
      • Algolithm (12)
      • Backjoon (25)
      • Programmers (42)
    • Etc (27)
      • Book Review (3)
      • Adsp (6)
      • Life (2)
      • Docker (1)
      • odds and ends (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • GitHub

인기 글

태그

  • AI
  • ADsP
  • SpringMVC
  • 백준
  • JAVA8
  • 파이썬
  • JPA
  • 선형대수
  • 프로그래머스
  • DP
  • BOJ
  • certificate
  • 브루트포스
  • data
  • 문제풀이
  • 카카오
  • BFS
  • swift
  • 개발
  • 자바
  • 구현
  • Front-end
  • Python
  • 개발자
  • java
  • ios
  • uArm
  • 코딩테스트
  • 알고리즘
  • 머신러닝

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
JinSeopKim

Hello World!

CodingTest/Programmers

[PGM] 점프와 순간이동

2022. 8. 3. 13:13
728x90
728x90

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/12980

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

👨🏻‍💻 핵심 스킬 👨🏻‍💻
Greedy

1. 문제 이해

점프는 K칸을 이동하는 것이고 순간이동은 지금까지 온 거리의 2배만큼 이동하는 것 입니다.

이 때 주의해야할 점은 점프는 배터리가 소모되고, 순간이동은 소모되지 않는다는 점입니다.

 

저는 이 문제를 처음에 대충 읽고 풀다가.. 뒤로도 점프하는 경우까지 고민했네요.(뒤로 점프가 가능하다면 예를들어 15로 가야할 경우에는 16에서 한칸 아래로 가면 2번만에 갈 수 있기 때문에 Greedy보다는 브루트포스로 해결해야합니다. 근데 제한사항을 보니 도저히 브루트포스로 해결할 수 없는 시간이어서 너무 고민했습니다. 문제를 잘 읽어야겠네요 ㅠㅠ)

뒤로 점프할 수 없으니 안심하시고 문제를 해결하시면 됩니다.

 

2. 접근방법

0에서부터 목표지점인 n까지 출발하는 것보다, n에서 돌아오는 방법을 사용하면 Greedy구현이 편리합니다.

연산은 나머지 연산을 사용해서 2의 배수인지 체크하여 주었습니다.

 

점프는 앞으로 갈 수 밖에 없으므로 목표지점인 n칸에서부터 2로 나누어지면 순간이동, 아니면 1칸 뒤로 이동하고 마지막에 점프한 횟수를 계산하면 간단하게 문제를 해결할 수 있습니다.

구현코드

def solution(n):
    ans = 0
    while n != 0:
        if n%2 == 0:
            n = n/2
        elif n%2 == 1:
            n = n-1
            ans = ans+1
    return ans
잘못된 지식이나 궁금한 내용이 있을 경우 편하게 댓글 남겨주시면 감사하겠습니다 :)
728x90
728x90
저작자표시 비영리 (새창열림)

'CodingTest > Programmers' 카테고리의 다른 글

야간전술보행 (Python)  (0) 2022.11.30
[PGM] 구명보트 (java)  (0) 2022.03.29
[PGM] 주식 가격 (Java)  (0) 2022.03.27
[PGM_12981] 영어 끝말잇기 (Java)  (0) 2022.03.17
[PGM_77885] 2개 이하로 다른 비트 (Java)  (0) 2022.03.16
    'CodingTest/Programmers' 카테고리의 다른 글
    • 야간전술보행 (Python)
    • [PGM] 구명보트 (java)
    • [PGM] 주식 가격 (Java)
    • [PGM_12981] 영어 끝말잇기 (Java)
    JinSeopKim
    JinSeopKim
    기록📚

    티스토리툴바