[백준][Java] 1011번 Fly me to the Alpha Centauri

2018. 4. 26. 19:34· 알고리즘 풀이/백준
728x90

문제에서 움직이는 우주선의 특징을 이용하여

규칙을 찾아내야 합니다.

저 같은 경우는 연습장에 차근차근 써 봤습니다.

거리 1부터 7까지 최소한의 도약 횟수를 문제로 써보다보니

규칙 하나를 찾을 수 있었습니다.

x개의 자리를 가진 숫자의 MAX값의 집합에는 이러한 규칙이 있습니다.


1자리  1                   ->            null              1               null

2자리  1 1                ->             null             1 1              null

3자리  1 2 1             ->              null 1           2              1 null

4자리  1 2 2 1           ->              null 1          2 2            1 null

5자리  1 2 3 2 1        ->               null 1 2         3           2 1 null

6자리  1 2 3 3 2 1      ->               null 1 2        3 3         2 1 null

7자리  1 2 3 4 3 2 1    ->               null 1 2 3       4       3 2 1 null


....            ....




보시면 처음 시작을 0자리 (이해가 안가실지도 모르지만 null이 2개 있다고 생각하시면)

0자리에서 1자리로 갈 때 


null 1 null


기존의 자리 수 중앙에 숫자가 하나 들어갑니다. 그 다음 자리수 또한 숫자 1이 들어가


null 1 1 null


그 숫자가 쌍으로 2번 들어가면 이제 1이 늘어난 숫자인 2가 중앙에 들어가


null 1 2 1 null .. 이런 식의 규칙을 갖습니다.


즉 해당 자리수가 가질 수 있는 최대값의 규칙을 찾아, y부터 x사이의 거리값이 n자리와 n+1자리 

숫자의 사이에 위치하게 되면 문제에서 요구하는 우주선의 도약 횟수는 n+1이 되는 것 입니다.




 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
32
33
34
35
36
37
import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		long[] a = new long[T];
		long x=0,y=0;
		int[] res = new int[T];
		
		for(int i=0; i<T; i++) {
			x=sc.nextLong();
			y=sc.nextLong();
			a[i]=y-x;
		}
		
		for(int i=0; i<T; i++) {
			long max=0,unit=1,unit_up=0;
			while(true) {
				max+=unit;
				res[i]++;
				unit_up++;
				if(max>=a[i]) break;
				else if(unit_up==2) {
					unit++;
					unit_up=0;
				}
			}
		}
		
		for (int i : res) {
			System.out.println(i);
		}	
	}
}


저작자표시 (새창열림)

'알고리즘 풀이 > 백준' 카테고리의 다른 글

[백준][Java] 6064번 카잉 달력  (0) 2018.04.29
[백준][Java] 1978번 소수 찾기  (0) 2018.04.28
[백준][Java] 10250번 ACM 호텔  (0) 2018.04.26
[백준][Java] 1475번 방 번호  (0) 2018.04.26
[백준][Java] 2775번 부녀회장이 될테야  (0) 2018.04.26
'알고리즘 풀이/백준' 카테고리의 다른 글
  • [백준][Java] 6064번 카잉 달력
  • [백준][Java] 1978번 소수 찾기
  • [백준][Java] 10250번 ACM 호텔
  • [백준][Java] 1475번 방 번호
배게
배게
백엔드배게 님의 블로그입니다.
배게
백엔드
배게
전체
오늘
어제
  • 분류 전체보기 (430)
    • 알고리즘 풀이 (338)
      • 백준 (167)
      • Codility (22)
      • 프로그래머스 (123)
      • LeetCode (2)
      • CodeForces (9)
      • SWEA (15)
    • 백엔드 (11)
    • Coding existing for (3)
    • 무지성 메모 (40)
    • Debug (30)
    • 자바 (8)

블로그 메뉴

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

공지사항

인기 글

태그

  • 카톡
  • hibernate
  • 카톡 내보내기한 파일 정렬
  • MYSQL
  • 카카오톡 txt파일 정렬
  • 카카오톡

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
배게
[백준][Java] 1011번 Fly me to the Alpha Centauri
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.