
def solution(numbers):
answer = []
k=0
n=len(numbers)
for i in range(n):
for j in range(1,n):
k=numbers[i]+numbers[j]
answer.append(k)
answer=set(answer)
answer=list(set(answer))
return answer
numbers =[2,1,3,4,1] 으로 했는데 결과가 잘 못 나옴

아마 중복 된 걸로 예상
i와 j가 중복된 숫자가 들어가지 않게 수정
def solution(numbers): answer = [] k=0 n=len(numbers) for i in range(n): for j in range(i+1,n): k=numbers[i]+numbers[j] answer.append(k) answer=set(answer) answer=list(set(answer)) return answer정확성 테스트에서 실패
why?
모르겠어서 chat gpt한테 물어봄
chatgpt 답안
def solution(numbers):
answer = []
k=0
n=len(numbers)
for i in range(n):
for j in range(i+1,n):
k=numbers[i]+numbers[j]
answer.append(k)
answer=set(answer)
return list(answer)
정확성 테스트에서 5개중에 2개가 오류남
마지막에 중복 제거하는거에서 오류가 난걸까라는 생각이 듦
def solution(numbers):
answer = []
k=0
n=len(numbers)
for i in range(n):
for j in range(i+1,n):
k=numbers[i]+numbers[j]
answer.append(k)
answer=set(answer)
answer=list(answer)
answer.sort()
return answer
틀렸던 이유
마지막에 오름차순으로 정렬을 안해서....
문제를 꼼꼼하게 읽자..ㅋㅋㅋ
문제상황
"""
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수,
solution을 완성해 보세요.
배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.
예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로
solution(3, 12)는 [3, 12]를 반환해야 합니다.
제한 사항
두 수는 1이상 1000000이하의 자연수입니다.
"""
알고리즘
- 최대공약수를 먼저 구하고 이를 이용해서 최소 공배수를 구하자
- n,m중에서 더 큰수를 n에 두고 계산한다.
- 최대 공약수는 m보다 작은 수 중에서 n과 m으로 나누었을때 나머지가 둘다 0이 나오는 수여야한다. 이를 이용해 for 문을 이용해서 대입한다.
- 최대 공약수를 구하면 n,m을 최대 공약수로 나눈 몫을 구하고 모두 곱하면 최소 공배수를 구할 수 있다.
코드1회차
def solution(n, m): common_divisor=0 common_multiple=0 answer=[] if m > n: n,m = m,n for i in range(m-1): if (n%i==0) and (m%i==0): common_divisor=i common_multiple=(n//common_divisor)*(m//common_divisor) answer=[common_divisor,common_multiple] return answer오류 내용
i에 0부터 들어가니까 오류가 생김