728x90
시간 제한 : 0.2초
메모리 제한 : 512MB
입력
Your program is to read from standard input. The input consists of a single line that contains an integer, n (1 ≤ n ≤ 1,000,000,000)
출력
Your program is to write to standard output. Print exactly one line. If the given number n is a happy number, print out HAPPY; otherwise, print out UNHAPPY.
소스코드
#include <iostream> #include <set> using namespace std; int main(void) { int n, m; set<int> s; cin >> n; if (n == 1) { cout << "HAPPY"; return 0; } while (1) { s.insert(n); m = 0; while (n >= 10) { int t = n % 10; n /= 10; m += t * t; } m += n * n; n = m; if (n == 1) { cout << "HAPPY"; return 0; } else if (s.size() > 1 && s.find(n) != s.end()) { cout << "UNHAPPY"; return 0; } } }
Tip
숫자를 자릿수 단위로 쪼개는 과정과 set 활용 방법만 잘 알고 있으면 풀 수 있는 문제다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 2877 - 4와 7(COCI 2010/2011) (0) | 2018.05.25 |
---|---|
백준] 2504 - 괄호의 값(KOI 2008 지역본선) (0) | 2018.05.24 |
백준] 11049 - 행렬 곱셈 순서 (0) | 2018.05.13 |
백준] 10040 - 투표(JOI 2014 예선) (0) | 2018.05.12 |
백준]1546 - 평균 (0) | 2018.05.10 |