21번. 하샤드 수
def solution(x):
a = list(str(x))
b = sum(map(int,a))
if x%b == 0 :
answer = True
else :
answer = False
return answer
> 한 줄로 표현
def solution(x):
return x%sum(map(int, list(str(x)))) == 0
> for문에 i in str하면 문자의 각 요소들로 구분되어 입력된다는 것을 이해
def solution(x):
return n%sum(int(i) for i in str(x)) == 0
22번. 두 정수 사이의 합
def solution(a, b):
answer = 0
if a == b :
answer = a
elif a > b :
for i in range(0,a-b+1) :
answer += b + i
else :
for i in range(0,b-a+1) :
answer += a + i
return answer
> 간단한 식
def solution(x):
if a > b :
a, b = b, a
return sum(range(a,b+1))
> m부터 n까지의 합 (1부터 n까지의 합 공식)
def solution(a, b):
return (abs(a-b)+1)*(a+b)//2
23번. 콜라츠 추
def solution(num):
i = 0
count = 0
while i != 1 :
if num == 1:
break
elif num % 2 == 0 :
i = num/2
else :
i = num*3+1
num = i
count += 1
if count == 500 :
count = -1
break
answer = count
return answer
> while문 간편식
def solution(num):
cnt = 0
while num != 1 and cnt < 500:
num = 3 * num + 1 if num % 2 else num // 2
cnt += 1
return cnt if cnt < 500 else -1
> for문 활용
def solution(num):
if num == 1:
return 0
else :
for i in range(500):
num=num/2 if num%2==0 else num*3+1
if num==1:
return i+1
return -1
24번. 서울에서 김서방 찾기
> 대소문자 주의...
def solution(seoul):
answer = '없다'
if "Kim" in seoul :
x = seoul.index('Kim')
answer = f'김서방은 {x}에 있다'
return answer
> 포맷팅 다른 방법
def solution(seoul):
return "김서방은 {}에 있다".format(seoul.index('Kim'))
def solution(seoul):
answer = ''
return ('김서방은 %d에 있다' %seoul.index('Kim'))
25번. 나누어 떨어지는 숫자
def solution(arr, divisor):
answer = []
for x in arr :
if x % divisor == 0 :
answer.append(x)
if answer == []:
# If not answer: 이는 즉 answer가 []빈리스트일 때 False이기 때문
answer.append(-1)
answer.sort()
return answer
> 간단한 식
def solution(arr, divisor):
arr = [x for x in arr if x % divisor == 0]
arr.sort()
return arr if len(arr) != 0 else [-1];
> 한 줄로
def solution(arr, divisor):
return sorted([n for n in arr if n%divisor == 0]) or [-1]
+ 문제) 같은 숫자는 싫어
> list[i]에서 i가 index 수를 넘어가면 오류
> list[i : i+1]에서 i가 index 수를 넘어가도 오류는 x 다만 빈 리스트
def solution(arr):
answer = []
for i in range(len(arr)) :
if arr[i:i+1] != arr[i+1:i+2] :
answer.append(arr[i])
return answer
> 다른 답
def solution(arr):
answer = []
answer.append(arr[0])
for i in arr[1:] :
if answer[-1:] == [i] :
pass
else :
answer.append(i)
return answer
> 다른 창의적인 답
def solution(arr):
answer = []
for i in arr :
if answer[-1:] == [i] : continue
answer.append(i)
return answer
'[스파르타코딩클럽]데이터분석 과정 > PYTHON' 카테고리의 다른 글
[Python] 초보자를 위한 300제 (틀린 문제 복습 차원) (1) | 2024.01.08 |
---|---|
[Python] 점프 투 파이썬 (복습 차원) (0) | 2024.01.08 |
[Python 코드카타] 16~20번 (프로그래머스) (1) | 2024.01.07 |
[Python 코드카타] 11 ~ 15번 (프로그래머스) (0) | 2024.01.06 |
[Python 코드카타] 6~10번 (프로그래머스)_(1~5번 다시풀기) (1) | 2024.01.05 |