티스토리 뷰
문제
헤일스톤 수열은 다음과 같이 정의 한다.
- n이 짝수라면, 2로 나눈다.
- n이 홀수라면, 3을 곱한 뒤 1로 더한다.
헤일스톤 추측은 임의의 양의 정수 n으로 수열을 시작한다면, 항상 4, 2, 1, 4, 2, 1,...로 끝난다는 추측이다. 이 문제에서는 1이 나오면 수열이 끝난 것으로 처리한다.
n이 주어졌을 때, 이 수열에서 가장 큰 값을 찾아 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 100,000)가 주어진다. 다음 줄부터 T개의 줄에는 헤일스톤 수열의 시작값 n이 주어진다. (1 ≤ n ≤ 100,000)
출력
각각의 테스트 케이스에 대해서, n으로 시작하는 헤일스톤 수열에서 가장 큰 값을 출력한다.
예제 입력
4 1 3 9999 100000
예제 출력
1 16 101248 100000
코드
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 38 39 40 41 42 43 44 45 46 | package dp; import java.util.Scanner; /** * https://www.acmicpc.net/problem/3943 * 헤일스톤 수열 * @author minjung * */ public class baekjoon_3943 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for ( int i = 0; i < T; i++ ){ int hailstone = sc.nextInt(); int max = 0; max = hailstone; while( hailstone != 1 ){ if ( max <= hailstone ){ max = hailstone; } if ( hailstone % 2 == 0 ){ hailstone = hailstone/2; } else if ( hailstone % 2 != 0 && hailstone != 1 ){ hailstone = hailstone*3 + 1; } } System.out.println(max); } } } | cs |
'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
[정렬] BOJ_1431 시리얼 번호 (0) | 2017.04.24 |
---|---|
[다이나믹 프로그래밍] BOJ_2293 동전1 (0) | 2017.04.21 |
[다이나믹 프로그래밍] BOJ_2156 포도주 시식 (0) | 2017.04.20 |
[다이나믹 프로그래밍] BOJ_2225 합분해 (0) | 2017.04.19 |
[DFS, BFS] BOJ_5913 준규와 사과 (0) | 2017.04.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 예외처리
- jsp
- servlet
- order by
- RequestMapping
- java
- DP
- 안드로이드 스튜디오
- DFS
- REDIRECT
- onBackPressed
- 자바
- controller
- indexOf
- restfb
- INSERT
- AlertDialog.Builder
- sort
- algorithm
- 이클립스
- Spring
- maven
- table
- onPostExecute
- BFS
- mybatis
- Baekjoon Online Judege
- 안드로이드 비콘
- boj
- list
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함