일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 과일 장수
- 태그
- Combination
- python
- Tree
- 스택
- 알고리즘의 조건
- 프로그래머스
- 코딩 테스트
- html
- 들여쓰기로 표현한 트리
- list
- java
- 코딩테스트
- import itertools
- 트리
- 리스트
- Import
- 알고리즘
- 파이썬
- 자료구조
- 좋은 알고리즘
- 유사코드
- itertools
- 유한소수 판별하기
- 큐
- 알고리즘의 조건 5가지
- 자바
- 알고리즘 표현
- LV.1
- Today
- Total
목록python (59)
인천의 자유인

나의 문제 풀이import itertools def solution(nums): a = list(itertools.combinations(nums,3)) answer = 0 for i in a: i = sum(i) count = 0 for j in range(2, int(i/2)+1): if i%j == 0: break count +=1 if count == int(i/2)-1: answer+=1 return answer 먼저 import itertools은 제가 정리한 글이 있으니 잘 모르신다면 보고 오시는 것을 추천드립니다. https://y01112.tistory.com/87 itertools.combinations(nums,3)을 하면 중복되지 않게 3개를 뽑을 수 있습니다. 이것을 한 뒤에는 바..

원래 일반적으로 순열과 조합을 구하기 위해서는 중첩 for문을 사용했어야 합니다. 적은 리스트일 경우에는 문제가 없지만 큰 수일 경우에는 문제가 생깁니다. 예를 들어 코딩테스트를 연습했을때에 시간 초과가 일어나는 것이죠. 그러한 의미에서 이번에 ptyhon의 itertools를 이용해서 for문 없이 순열과 조합을 구하는 방법에 대해 알아보고자 합니다. 순열(perminutation)순열이란 로 다른 n 개 중 r 개를 골라 순서를 고려해 나열한 경우의 수를 말합니다.(출처: 순열 (naver.com))순열을 구하는 방식은 다음과 같습니다. itertools.permutations(리스트명, 고를 개수)예제를 통해 알아봅시다. import itertools data = [4,2,3,3,1] a = ite..
먼저 순환이라는 것이 무엇을 의미하는 말할 필요가 있을것 같습니다.순환이란 어떤 함수가 자기 자신을 다시 호출하여 문자을 해결하는 프로그래밍 기법입니다. 팩토리얼을 구할 수 있는 방법이라 하면 반복문과 순환을 이용하는 두가지 방법을 이용할 수 있는데 먼저 반복문 부터 봅시다. 1. 반복문반복문을 이용한 예입니다.def loop(n): a =1 for k in range(2, n+1): a = a * k return a우리에게 굉장히 친숙한 방법입니다. a = 1로 한 것은 알겠지만 0으로 하면 계속 0이 되기 때문입니다.이 예제는 그냥 1부터 n까지 계속 곱하는 간단한 식입니다.2. 순환순환을 사용한 예입니다.def recusion(n): if n == 1: ..

나의 문제 풀이def solution(n): a = 0 for i in range(2,n+1): answer = 0 for j in range(1, int(i**(1/2))+1): if i%j == 0 : answer += 1 if j 2: a+=1 break return n-(a+1) 1000000 이하의 자연수이기 때문에 일반적인 약수 구하는 방법은 안됩니다. 그래서 계산 횟수가 매우 적은 방법인 에라토스테네스의 체를 이용해서 할 수 밖에 없습니다. 일반적인 방법으로 하면 시관 초과로 안됩니다. 이렇게 해서 약수가 두개인 것이 소수이..

나의 문제 풀이def solution(k, m, score): answer = sorted(score) a = len(answer)%m for i in range(a): answer.pop(0) result = 0 for i in range(0,len(answer),m): result += answer[i]*m return result k는 사과 최대 점수, m은 한 상자에 들어가는 사과 수임을 명확히 인식하고 들어가야지 헷갈리지 않습니다. 먼저 score를 오름 차순으로 정렬한 후 사과 박스에 담은 후 남은 사과 수를 구합니다. 최대 이익으로 내기 위해서는 가장 점수가 낮은 사과들을 제외하는 것이 좋기 때문입니다. 남은 사과 수는 answer 리스트 안에서 가장 점수가 낮은 사과로 구성되어야 하기 때문..

나의 문제 풀이def solution(answers): one = [1,2,3,4,5] two = [2,1,2,3,2,4,2,5] three = [3,3,1,1,2,2,4,4,5,5] lis1 = [a - b for a, b in zip(answers, one*10000)] lis2 = [a - b for a, b in zip(answers, two*10000)] lis3 = [a - b for a, b in zip(answers, three*10000)] answer = {'1':lis1.count(0), '2':lis2.count(0), '3':lis3.count(0)} result = sorted(answer) a = max(answer, key=an..

나의 문제 풀이def solution(number, limit, power): lis = [] for i in range(1,number+1): count = 0 for j in range(1, int(i**(1/2)) + 1): if i%j == 0: count +=1 if j limit: lis.append(power) else: lis.append(count) return sum(lis) 시간 복잡도가 문제였던것 같습니다. 일반적으로 약수 구하는 공식을 썼을 경우에는 코드 실행부분은 통과해도 수가 굉장히 많이 커지면 런타임 에러로 통..

나의 문제 풀이def solution(a, b): day = ['FRI','SAT','SUN','MON','TUE','WED','THU'] month = [0,31,29,31,30,31,30,31,31,30,31,30] days = 0 for i in range(a): days+= month[i] days += b-1 return day[(days%7)] 아마 이 코드를 보시면 뭔가 느끼셨을 것입니다. SUN(주일)을 먼저 하지 않고 FRI(금요일)을 먼저 했다는 것을요. 그렇습니다. 2016년은 1월 1일이 금요일로 시작하기 때문에 금요일을 해주는 것이 중요하다고 생각했습니다. 그리고 month 리스트 같은 경우에도 0인덱스 부분을 0으로 만들었는데 그것은 ..

나의 문제 풀이def solution(nums): lis = list(set(nums)) if len(nums)/2 >= len(lis): return len(lis) else: return len(nums)/2 이 문제는 최대한 많은 종류 받을 수 있는 폰켓몬 수를 구하는 것입니다. 받는 수량 (len(nums)/2) 개를 받는 가정하에 말입니다. 만약 이를 구하려면 중복을 없앤 다음 구하는 것이 좋습니다. 중복이 없게 만들면 중류가 몇개가 있는지 알 수 있기 때문입니다. 먼저 중복을 없애기 위해 set로 변경해주고 혹시 모르니 list형식으로 다시 바꿈니다.(물론 안해도 문제 없을 것 같긴 하네요) 이 작업이 끝나면 가장 많은 종료를 구하면 됩니다. 만약 받는..

나의 문제 풀이def solution(cards1, cards2, goal): lis = [] one = 0 two = 0 for i in range(len(goal)): if len(cards1)>one and goal[i] == cards1[one]: lis.append(cards1[one]) one += 1 elif len(cards2)>two and goal[i] == cards2[two]: lis.append(cards2[two]) two += 1 if lis == goal: return "Yes" return "No"제가 택한 방법은 lis라는 빈..