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

나의 문제 풀이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개를 뽑을 수 있습니다. 이것을 한 뒤에는 바..

나의 문제 풀이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라는 빈..

나의 문제 풀이def solution(k, score): lis = [] result = [] for i in range(len(score)): lis.append(score[i]) lis.sort() if i 이 프로그램에서는 "명예의 전당"의 최하위 점수를 발표한다고 했습니다.발표 점수에는 k번째 순위 점수가 내려오는 것이기 때문에 일단은 각각의 점수를 모두 lst에 더함과 동시에 정렬을 합니다. 그리고 k번째 순위 점수를 result 리스트에 추가함으로서 답을 구하는 것입니다. 다만 아직 result리스트의 길이 k를 이상이 아니라면 이렇게 할 수 없기 때문에 마지막 그냥 가장 작은 수를 출력하기 때문에 i가 k보다 작을 경우에는 lst[0]부분..

나의 문제 풀이def solution(a,b,n): total = 0 remain = 0 while n>0: remain = remain + n%a n = (n // a)*b total += n if n%a != 0: n = n + remain remain = 0 return total 먼저 총 받을 개수를 구하기 위한 total를 만들고 그리고 나눴을 때 나머지가 될 remain이라는 변수를 만들어 줍니다. 그것을 만든 후에는 n이 0이 될 때 까지 계속 루프를 돌립니다. remain을 만들어 둔 이유는 10/2 같이 나누어 떨어질 경우에는 필요가 없지만 5/2같이 나누어 떨어지지 않은 경우도..