Search
Duplicate
📗

헤일스톤 수열

주차
문제번호
3943
언어
티어
브론즈
유형
DP
구현
시뮬레이션
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

1.
첫번째 접근
n을 입력을 받게 되면 짝수일때와 홀수일때의 각각의 경우에 대해서 연산 진행
연산을 진행하면서 큰 값을 계속 업데이트를 함
1을 만나게 되면 그 동안의 업데이트를 통해 최신화된 큰 값을 출력
//pseudo code cin >> t while (t--) { cin >> n while (n > 1) //1보다 크면 동작 { if (n % 2 == even) n /= 2; else n = n * 3 + 1 if (max < n) max = n; } cout << max << "\n" }
C++
복사

놓쳤던 부분

코드

2016KB

36ms

#include <iostream> void input_setting() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void solution() { int t; int n; int max; std::cin >> t; while (t--) { std::cin >> n; max = n; while (n > 1) { if (n % 2 == 0) n /= 2; else n = n * 3 + 1; if (max < n) max = n; } std::cout << max << "\n"; } } int main(void) { input_setting(); solution(); return (0); }
C++
복사