[BOJ/백준] 1011번 Fly me to the Alpha Centauri C++ 문제 풀이

2020. 11. 10. 00:51·Baekjoon/단계별로 풀어보기
728x90

단계별로 풀어보기 - 수학 1 단계 - [8단계] 1011번

문제

문제 링크 : www.acmicpc.net/problem/1011

 

1011번: Fly me to the Alpha Centauri

우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행

www.acmicpc.net

입력 복사 : 

3 0 3 1 5 45 50

 

풀이

y - x 이동 작동횟수
 1  1  1 
2 11 2
3 111 3
 4  121  3 
5 1211 4
6 1221 4
7 12211 5
8 12221 5
 9  12321  5 
10 123211 6
11 123221 6
12 123321 6
13 1233211 7
14 1233221 7
15 1233321 7
 16  1234321  7 
17 12343211 8
18 12343221 8

 

위 표는 y-x에 따라 최소 작동횟수로 이동할 때, 이동변화와 작동횟수이다.

표시한 y-x는 i*i라고 표기할 수 있는 제곱수이다.

y-x가 제곱수일 때를 기준으로 다음 y-x에 작동횟수가 변하는 것을 볼 수 있다.

또한, 제곱수(i * i)와 그 전 제곱수((i-1) * (i-1))의 중간값에서 작동횟수가 증가한다.

 

※주의할 것※은 이번 문제에서 입력 값의 범위는  2^31까지라는 것이다.

우리가 주로 쓰는 int형의 범위인 -2,147,483,648 ~ 2,147,438,647를 벗어난다.

따라서 double형으로 변수를 선언하여 사용하였다.

 

CODE

#include <iostream>
using namespace std;

int main() {
	int T;
	cin >> T;
	for (int test_case = 0; test_case < T; test_case++) {
		double x, y, result;
		cin >> x >> y;

		double i = 1;
		for (;; i++) {
			if (y - x < i*i)
				break;
		}

		//거리가 i-1의 제곱수일때
		if (y - x == (i - 1)*(i - 1)) {
			result = 2 * (i - 1) - 1;
		}
		//거리가 i-1의 제곱수와 중간값 사이에 있을 때
		else if (y - x < ((i - 1)*(i - 1) + i * i) / 2) {
			result = 2 * (i - 1);
		}
		//거리가 중간값과 i의 제곱수 사이에 있을 때
		else {
			result = 2 * i - 1;
		}
		cout << result << '\n';
	}
}

 

결과

 

728x90
저작자표시

'Baekjoon > 단계별로 풀어보기' 카테고리의 다른 글

[BOJ/백준] 2581번 소수 C++ 문제 풀이  (0) 2020.11.10
[BOJ/백준] 1978번 소수 찾기 C++ 문제 풀이  (0) 2020.11.10
[BOJ/백준] 2775번 부녀회장이 될테야 C++ 문제 풀이  (0) 2020.11.07
[BOJ/백준] 10250번 ACM 호텔 C++ 문제 풀이  (0) 2020.11.07
[BOJ/백준] 2869번 달팽이는 올라가고 싶다 C++ 문제 풀이  (0) 2020.11.07
'Baekjoon/단계별로 풀어보기' 카테고리의 다른 글
  • [BOJ/백준] 2581번 소수 C++ 문제 풀이
  • [BOJ/백준] 1978번 소수 찾기 C++ 문제 풀이
  • [BOJ/백준] 2775번 부녀회장이 될테야 C++ 문제 풀이
  • [BOJ/백준] 10250번 ACM 호텔 C++ 문제 풀이
s_ih_yun
s_ih_yun
  • s_ih_yun
    CODESYUN
    s_ih_yun
  • 전체
    오늘
    어제
    • 분류 전체보기 (326)
      • Computer Science (26)
        • Concept (3)
        • Algorithm (23)
      • Web (54)
        • Web (7)
        • Spring (14)
        • MyBatis (1)
        • AWS (7)
        • HTML & CSS (14)
        • JavaScript (11)
      • Programming (37)
        • C++ (3)
        • Java (6)
        • Python (10)
        • MySQL (1)
        • Oracle (2)
        • Git (15)
        • Dev Tools (0)
      • Infra˙ DevOps (1)
      • Baekjoon (104)
        • 단계별로 풀어보기 (78)
      • CodeUp (98)
        • Python 기초 100제 (98)
      • Programmers (2)
      • Books (3)
      • etc (1)
  • 블로그 메뉴

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

  • 공지사항

    • Syun's Pages
  • 인기 글

  • 태그

    Cloud
    CSS
    web
    HTML
    github
    Python
    웹
    자료구조
    spring
    JavaScript
    C
    SourceTree
    MySQL
    myBatis
    c++
    CodeUp 기초 100제
    알고리즘
    Programmers
    codeup
    BOJ
    oracle
    aws
    clean code
    db
    Tistory
    java
    git
    VS Code
    단계별로 풀어보기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_ih_yun
[BOJ/백준] 1011번 Fly me to the Alpha Centauri C++ 문제 풀이
상단으로

티스토리툴바