항해 99 취업 리부트 코스에 참여!
알고리즘과 자료구조를 보다 익히기 위해 파이썬으로 문제를 푸는 시간을 가졌다.
생각한 접근 방식
def solution(x):
nums = [int(number) for number in str(x)]
total = sum(nums)
return x % total == 0
리스트 컴프리헨션은 파이썬에서 간결하게 리스트를 생성하는 방법 중 하나이다.
접근하기
range(a, b+1)을 사용할 수 있다.a = 3
b = 5
# a와 b 사이의 모든 정수를 출력
for num in range(a, b + 1):
print(num)
a=3이고 b=5라면, range(3, 6)을 사용하여 3부터 5까지의 정수를 생성할 수 있다.numbers = list(range(3, 6))
print(numbers) # [3, 4, 5]
풀이
def solution(a, b):
# a와 b가 같으면 아무 수나 리턴
if a == b:
return a
# a와 b 중 큰 값 찾기
min_value = min(a,b)
max_value = max(a,b)
# a와 b 사이의 범위값 구하기
result = range(min_value, max_value+1)
return sum(result)
접근하기
접근하기
def solution(seoul):
i = seoul.index("Kim")
return "김서방은 " + str(i) + "에 있다"
다른 방법
enumerate() : 배열의 각 요소와 해당 요소의 인덱스를 순회할 때 유용하게 사용
def solution(seoul):
for idx, name in enumerate(seoul):
if name == "Kim":
return "김서방은 " + str(idx) + "에 있다"
접근하기
def solution(arr, divisor):
result = []
for num in arr:
if num % divisor == 0:
result.append(num)
result.sort()
if len(result) == 0:
result = [-1]
return result
접근하기
n이 4면은 수박수박, n이 8이면 수박수박수박수박.
“수박” 곱하기 n/2 를 하면 되지만 정수값이 필요하기에 // 연산자를 사용한다.
n이 홀수일 때는 “수” 만 추가해주기.
def solution(n):
pattern = "수박" * (n//2)
if n % 2 != 0:
pattern += "수"
return pattern
좋아보였던 풀이
def water_melon(n):
# 함수를 완성하세요.
return "수박" * (n//2) + "수" * (n%2)
접근하기
a 리스트의 i번째와 b리스트의 i 번째를 곱하고, 그 다음 i 번째의 곱과 합산해야 함.
i번째 끼리 곱한 값을 새 리스트에 넣고, sum으로 전부 더하자.
def solution(a, b):
i = 0
answer = []
while i < len(a):
answer.append(a[i] * b[i])
i += 1
return sum(answer)
zip과 리스트 컴프리헨션 활용하기
def solution(a, b):
return sum([x*y for x,y in zip(a,b)])
• 1 ≤ left ≤ right ≤ 1,000 left와 right 사이의 숫자들이 각각 약수가 짝수인지 홀수인지 찾기
짝수인 숫자는 더하고 홀수인 숫자는 빼서 합계 구하기.
a = 13
b = 17
total = 0
for num in range(a,b+1):
count = 0 # 짝홀 판별할 약수의 개수
for i in range(1, num+1):
if num % i == 0: # True로 나오는 게 약수
count += 1
if count % 2 == 0: # 약수가 짝수인 경우
total += num
else:
total -= num
print(total) # 43
조건: s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하기
접근: 정렬 메소드 알아보기. 문자열에 사용해야하고, reverse 도 가능한지 봐야함
def solution(s):
answer = ''.join(sorted(s, reverse=True))
return answer
포인트: reverse는 리스트에서 사용하고 문자열에서 하려면 sotred 내부에서 reverse를 사용해서 처리해야함.
sorted는 리스트로 변환시키기에 join 으로 일반 문자열로 다시 바꿔준다.
price = 3
money = 20
count = 4
# 3x1 3x2 3x3 3x4 1부터 카운트까지 가격 증가
total = 0
for num in range(1, count+1):
total += price * num
if money - total < 0:
print(total - money)
else:
print(0)
if문 짧게 쓰는 방법
for x in range(1, count + 1):
allPrice += x * price
return allPrice - money if money - allPrice < 0 else 0
#참일때 할 식 if 조건문 else 거짓일때 할 식