일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스
- PYTHON
- 전자공학
- 릿코드
- leetcode
- Leet Coding Challenge
- DSP
- IOS
- 알고리즘 문제풀이
- 파이썬
- 이산신호처리
- SWIFT
- 카카오 코딩테스트
- leet code
- 코테
- 독서노트
- 알고리즘문제풀이
- 알고리즘
- SWIFTUI
- 코딩테스트
- 트라이
- 컨볼루션
- Trie
- dft
- 신호처리
- 스위프트
- 백준
- DTFT
- backjoon
- 코테준비
Archives
- Today
- Total
매일 매일 성장하는 섭섭군
[LeetCode Top Interview Questions] Happy Number 본문
반응형
LeetCode에서 Interview Questions Challange가 있어 데일리 첼린지 이외에 이것도 풀어보기로 했다.
이번에 풀어본 문제는 Happy Number 라는 문제이다. 행복한 숫자라는데 한번 문제를 살펴보자.
leetcode.com/explore/interview/card/top-interview-questions-medium/113/math/815/
행복한 숫자란 각 자릿수를 제곱해서 더하다 보면 결국 1이 되는 숫자를 의미한다. 이게 왜 행복한 숫자인지 모르겠다.
아무튼 1이 될때 까지 loop를 돌리면 된다. 하지만 모든 숫자가 1이 되지는 않기 때문에 우리는 이거를 걸러줘야 한다.
걸러내는 방법은 생각보다 쉽다.
계속해서 제곱해서 더하다보면 1이 나오지 않는 행복하지 않는 숫자는 중복된 숫자가 있을것이다.
즉, loop를 계속 도는데 중복되는 숫자가 나오면 False를 리턴하면 된다. 1이 나오면 True를 리턴!
전체 코드는 다음과 같습니다. 질문이나 피드백은 언제나 감사드립니다.
class Solution:
def isHappy(self, n: int) -> bool:
numSets = set()
while True :
nums = list(map(int, list(str(n))))
n = 0
for i in nums :
n += i*i
if n == 1 :
return True
if n in numSets :
return False
numSets.add(n)
반응형
'알고리즘 문제풀이 > LeetCode' 카테고리의 다른 글
[Leet Coding Challenge]Excel Sheet Column Number, 2020.08.08~14 (0) | 2020.08.11 |
---|---|
[Leet Coding Challenge] Add and Search Word - Data structure design, 2020.08.01~07 (0) | 2020.08.06 |
[Leet Coding Challenge] Power of FourSolution, 2020.08.01~07 (0) | 2020.08.04 |
[Leet Coding Challenge] Valid Palindrome, 2020.08.01~07 (0) | 2020.08.04 |
[Leet Coding Challenge] Design HashSet, 2020.08.01~07 (0) | 2020.08.03 |
Comments