[프로그래머스] Lv.1 나누어 떨어지는 숫자 배열 (파이썬) 완전 탐색으로 나누어 떨어지는지 확인하고 정답이 있으면 정답을, 아니면 -1을 리턴한다. def solution(arr, divisor): answer = [] for i in range(len(arr)): if arr[i]%divisor==0: #나눠 떨어지면 answer.append(arr[i]) if answer: #답이 존재할 경우 answer.sort() else: #없을 경우 answer.append(-1) return answer 프로그래머스 풀이 2022.02.15
[프로그래머스] Lv.1 같은 숫자는 싫어 (파이썬) 공간 a를 추가하지 않고 arr만으로 중복을 체크하고 다시 중복을 제거하면 효율성 테스트에서 떨어졌다. 그래서 a에 추가하는식으로 했다. def solution(arr): answer = [] a=[] for i in range(len(arr)-1): if arr[i]!=arr[i+1]: #같지 않다면 a.append(arr[i]) #a에 append a.append(arr[-1]) #마지막 원소 append # for i in range(len(arr)): # if -1 in arr: # arr.remove(-1) # else: # break 다시 한번 for문을 돌리면 효율성 테스트에 떨어진다 answer=a return answer 프로그래머스 풀이 2022.02.14
[프로그래머스] 가울데 글자 가져오기 (파이썬) 문제도 매우 간단하고 풀이는 길이가 2의 배수일 때만 조금 조심하면 될 것 같다. def solution(s): answer = '' if len(s)%2==0:#2로 나눠지는 경우 answer ="".join(s[len(s)//2-1:len(s)//2+1])#한 글자가 아니니 합쳐줌 else:#그 외의 경우 answer = s[len(s)//2] return answer 프로그래머스 풀이 2022.02.13
[프로그래머스] 비밀지도 (파이썬) 문제는 간단해 보였고 실제로 요구하는건 간단한데... 풀이에 온갖 기법들이 쓰인 문제라고 생각한다 특히 2진법으로 바꾸고 앞에 0을 채워주는건 생각하기 좀 힘들었다. def solution(n, arr1, arr2): answer = [0]*n for i in range(n): answer[i]=arr1[i]|arr2[i] answer[i]=bin(answer[i])[2:] answer[i] = [x for x in answer[i]] while len(answer[i]) 프로그래머스 풀이 2022.02.13
[프로그래머스] 부족한 금액 계산하기 등차 수열을 더하는 for문을 만들었고 가진돈을 빼주었다. ㅎㅎ def solution(price, money, count): answer = -1 b=0 for i in range(1,count+1): b+=price*i #필요한돈 if b>money: answer=b-money #필요한돈 - 가진돈 else: answer=0 #가진돈보다 적으면 0 return answer 프로그래머스 풀이 2022.02.12
[프로그래머스] Lv1. 나머지가 1이 되는 수 찾기 (파이썬) 나머지가 1이되는 수를 1부터 나눠보면서 알 수 있다. def solution(n): answer = 0 for i in range(1,n): if n%i==1: #나머지가 1일때 answer=i i를 답에 저장 break return answer 프로그래머스 풀이 2022.02.12
[프로그래머스] Lv1. 2016년 (파이썬) 금요일을 0번째 요일로 보고 각 달마다 일 수와 b일까지의 일수를 더해준 다음에 7로 나눈다. def solution(a, b): answer = '' k=["FRI","SAT","SUN",'MON','TUE','WED','THU'] #금요일부터 시작 d=0 # 일 수 for i in range(1,a): if i in [1,3,5,7,8,10]: #31일인 달 d+=31 elif i in[4,6,9,11]: #30일인 달 d+=30 elif i == 2: #29일인 달 d+=29 d+=b-1 #b일에서 1빼줌 answer=k[d%7] #일 수를 7로 나눈 나머지 return answer 프로그래머스 풀이 2022.02.12
[프로그래머스] Lv.1 두 개 뽑아서 더하기 (파이썬) 배열의 길이가 100이하이기 때문에 이중 for문을 써도 절대 시간초과가 안난다. 두 값을 더한 것을 정답배열에 넣고 요리조리 볶아준다. def solution(numbers): answer = [] for i in range(len(numbers)-1): for j in range(i+1,len(numbers)): answer.append(numbers[i]+numbers[j]) #두 숫자를 더한 값 append answer=list(set(answer)) #중복값 제거 answer.sort() #오름차순으로 return answer 프로그래머스 풀이 2022.02.12
[프로그래머스] Lv1. 예산 (파이썬) 최소값을 변경시켜주며 몇개나 공급할 수 있는지 찾는 문제 레벨1에 비슷한 문제가 많다. def solution(d, budget): answer = 0 k=987654321 #d의 최소값을 매번 바꾸기 위한 변수 for i in range(len(d)): if budget>=min(d): budget-=min(d) d[d.index(min(d))]=k answer+=1 #d의 최소값만큼 뺄 수 있을때 빼주고 정답에 1더함 else: break return answer 프로그래머스 풀이 2022.02.12
[프로그래머스] Lv1. 약수의 개수와 덧셈 (파이썬) 제곱수인지 판별하는걸 그냥 단순하게 if int(i**(0.5))==i**(0.5):로 비교해봤는데 다른사람들도 다 이렇게 했더라. 그 외에는 괜찮았던 문제. def solution(left, right): answer = 0 for i in range(left, right+1): if int(i**(0.5))==i**(0.5): #제곱수인지 판별 answer-=i else: answer+=i return answer 프로그래머스 풀이 2022.02.12