반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 프로그래머스
- 파이썬
- 다익스트라
- 재귀
- 딕셔너리
- python
- level0
- 구현
- level1
- BFS
- MYSQL
- level2
- BOJ
- 운영체제
- 힙
- 백준
- 그리디
- N과M
- programmers
- 브루트포스
- 다이나믹 프로그래밍
- 에라스토테네스의 체
- 수학
- 스택
- DP
- level3
- 코딩테스트
- 가상메모리
- dfs
- 가상메모리 관리
Archives
- Today
- Total
동캄의 코딩도장
프로그래머스 level2 [숫자 카드 나누기] 파이썬 본문
반응형
# 프로그래머스 level2 숫자 카드 나누기
def div(num):
arr=[]
for i in range(1,int(num**0.5)+1):
if num%i==0:
arr.append(i)
arr.append(num//i)
return arr
def solution(arrayA, arrayB):
min_A=min(arrayA)
min_B=min(arrayB)
arr_A=div(min_A)
arr_B=div(min_B)
ans_A=[]
ans_B=[]
for ele_arr_A in arr_A:
for val_A in arrayA:
if val_A % ele_arr_A!=0:
break
else:
ans_A.append(ele_arr_A)
for ele_arr_B in arr_B:
for val_B in arrayB:
if val_B % ele_arr_B!=0:
break
else:
ans_B.append(ele_arr_B)
A_minus_B=set(ans_A)-set(ans_B)
B_minus_A=set(ans_B)-set(ans_A)
answer=[]
for val in A_minus_B:
for ele_B in arrayB:
if ele_B % val==0:
break
else:
answer.append(val)
for val in B_minus_A:
for ele_A in arrayA:
if ele_A % val==0:
break
else:
answer.append(val)
if answer:
return max(answer)
else:
return 0
처음에 가장 작은수의 약수를 구할때, 1부터 가장작은수까지 반복문을 실행하며 반복하였는데, 시간초과가 발생하였다.
약수를 구하기위한 코드를 변경하니 해결되었다. (위의 div 함수 참조)
시간 초과 div 함수
# def div(num):
# arr=[]
# for i in range(2,num+1):
# if num%i==0:
# arr.append(i)
# return arr
변경 함수
def div(num):
arr=[]
for i in range(1,int(num**0.5)+1):
if num%i==0:
arr.append(i)
arr.append(num//i)
return arr
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level1 [명예의 전당 (1)] 파이썬 (0) | 2023.04.27 |
---|---|
프로그래머스 level1 [추억 점수] 파이썬 (0) | 2023.04.24 |
프로그래머스 level2 [순위 검색] 파이썬 (0) | 2023.04.17 |
프로그래머스 level2 [디펜스 게임] 파이썬 (0) | 2023.04.16 |
프로그래머스 level2 [연속된 부분 수열의 합] 파이썬 (0) | 2023.04.14 |