[백준] Fly me to the Alpha Centauri

2024. 10. 17. 02:24·PS

 

 


 

 


 

문제

https://www.acmicpc.net/problem/1011

 

 

개념

수학

 

 

실행 결과

 

 

 

 

 

구현 코드(c++)

#include <cmath>
#include <iostream>
using namespace std;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);

  int t;
  cin >> t;

  while (t--) {
    long long x, y;
    cin >> x >> y;

    double dist = y - x;                // 거리
    double dist_sqrt = sqrt(dist);      // 거리 제곱근
    int dist_round = round(dist_sqrt);  // 반올림

    if (dist_sqrt <= dist_round)
      cout << dist_round * 2 - 1 << '\n';
    else
      cout << dist_round * 2 << '\n';
  }

  return 0;
}

 

 

 

 

코드 설명

구현은 간단하지만 패턴을 알아내는 것이 어려운 문제였다.

처음에는 dp로 풀려고 했으나 마지막의 이동 횟수가 1이라고 해서 당황했다..

일단 처음과 마지막 이동횟수는 무조건 1이라는 정보는 명확하므로 이에 따라 거리를 늘려가면서 거리 당 이동 횟수를 노가다로 구해보며 수학적인 패턴을 찾는다.

 

출처: https://jaynamm.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-1011%EB%B2%88-Fly-me-to-the-Alpha-Centauri

 

 

두 지점간의 거리에 따른 각 이동 횟수는 위 표와 같다.

거리는 시작 지점부터 마지막 지점까지의 사이이므로 y - x 이다.

 

해당 거리의 제곱근값인 dist_sqrt를와, 이를 반올림한 값인 dist_round를 정의한다.

두 값이 필요한 이유는 dist_round가 어느 쪽에 가까운지에 따라 이동횟수가 결정되기 때문이다. 

 

두 값을 비교하여 만약 dist_sqrt가 dist_round보다 작거나 같은지를 비교하여 

참이라면 2 * 반올림 값 - 1, 아니라면 2 * 반올림 값을 출력한다.

 


 

저작자표시 (새창열림)

'PS' 카테고리의 다른 글

[코드트리] 제곱수의 합으로 나타내기  (0) 2024.12.08
[백준] 1010번: 다리 놓기  (0) 2024.10.23
[프로그래머스] 타겟 넘버  (0) 2024.10.12
[프로그래머스] 문자열 여러 번 뒤집기  (0) 2024.10.10
[프로그래머스] 주사위 게임 3  (1) 2024.10.09
'PS' 카테고리의 다른 글
  • [코드트리] 제곱수의 합으로 나타내기
  • [백준] 1010번: 다리 놓기
  • [프로그래머스] 타겟 넘버
  • [프로그래머스] 문자열 여러 번 뒤집기
abyss-s
abyss-s
프론트엔드 공부합니다.
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (12)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (3)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    React
    코드트리
    C++
    자바기반응용프로그래밍
    BAEKJOON
    백준
    BFS
    자바스크립트
    파이썬
    DP
    OS
    JavaScript
    Java
    github
    통계학
    그리디
    Python
    운영체제
    생활코딩
    네트워크
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
[백준] Fly me to the Alpha Centauri
상단으로

티스토리툴바