
월요일까지만 해도 파이썬 너무 어려워서 징징거렸는데 많이 발전했다.
알고리즘 코드카타를 하면서 느꼈다.
어제는 파이썬의 기초적인 걸 이해했다면 오늘은 for문에 대해 대충 이해했다.
좋다.
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
def solution(n):
answer = 0
for i in str(n):
answer += int(i)
return answer
처음에 어떻게 넣을지 고민했는데 문자열은 for문에서 하나씩 들어간다.
그래서 저렇게 바로 넣어도 된다.
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
def solution(x, n):
answer = []
for i in range(x,n+1,x):
answer = i
return answer
def solution(x, n):
answer = []
for i in range(x,x*n+1,x):
answer.append(i)
return answer
def solution(x, n):
answer = []
for i in range(x,x*(n+1),x):
answer.append(i)
return answer
def solution(x, n):
answer = []
for i in range(1,n+1):
answer.append(i*x)
return answer
이렇게 변형을 했다.
append안에서 연산이 되는 것을 알게 되었다.
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
def solution(n):
answer = []
a=[]
for i in str(n):
a.append(i)
anwser = a[::-1]
return answer
def solution(n):
a=[]
for i in str(n):
a.append(int(i))
a = a[::-1]
return a
첫 코드는 결과가 []로 나온다.
두번째는 깔끔하게 떨어진다.
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
def solution(n):
x = n**(1/2)
if type(x) == int:
return x+1
else:
return -1
def solution(n):
x = n**(1/2)
if x*x==n:
return (x+1)*(x+1)
else:
return -1
위에 코드처럼 한다고 에러가 뜨진 않는다.
하지만 모든 값이 실수형으로 나와서 불가능했다.
그래서 다른 조건을 걸었다.
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
def solution(n):
a=sorted(str(n))
return int(a)
def solution(n):
a=sorted(str(n),reverse=True)
return int(a)
def solution(n):
a=sorted(str(n),reverse=True)
return int(''.join(a))
역순으로 정렬하고 join을 사용해서 합쳐주었다.
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
def solution(a,b):
a=0
for i in range(a,b-a+2):
a += i
return a
def solution(a,b):
a=0
for i in range(a,b+1):
a += i
return a
def solution(a, b):
c=0
if a<b:
aa = a
bb = b
else:
aa = b
bb = a
for i in range(aa,bb+1):
c += i
return c
하나씩 잘못된 점을 찾아서 이쁜 코드를 만들었다.
def solution(a, b):
if a<b:
r=range(a,b+1,1)
return sum(r)
else :
r=range(b,a+1,1)
return sum(r)
다른 해설을 확인했는데 훨씬 깔끔해서 좋은 귀감이 되었다.