39. 소수 찾기 ★ (소수 판별 알고리즘)
2024. 7. 16. 14:12
프로그래머스/Lv. 1
유형 : 구현 (소수 판별)풀이 시간 : 15분 -> 인터넷 서치 소수 판별을 효율적으로 하려면, 에라스토테네스의 체 원리를 이용해야 한다. 1. 기본 : set, 에라스토테네스의 체 이용하기 def solution(n): answer = set([i for i in range(2, n+1)]) for i in range(2, int(n ** 0.5) + 1): if i in answer: mul = set([x for x in range(i*2, n+1, i)]) answer -= mul return len(list(answer)) - 체크 (순회) : n ** 0.5 + 1 / math.sqrt(n) +1 까지만 하면됨,- ans..
38. 소수 만들기 (소수 판별 알고리즘)
2024. 7. 16. 02:09
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 20분 def solution(nums): answer = -1 from itertools import combinations sumnum = [] for number in combinations(nums, 3): cnt = sum(number) sumnum.append(cnt) sumnum.sort(reverse = True) answer = 0 for i in range(len(sumnum)): if check(sumnum[i]) == False: answer += 1 return answerdef check(num): import math for i in rang..
37. 과일 장수
2024. 7. 14. 19:30
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 20분 def solution(k, m, score): answer = [] score.sort(reverse = True) cnt = 0 curr = [] for i in range(0, len(score)): curr.append(score[i]) cnt += 1 if cnt == m: answer.append(curr) cnt = 0 curr = [] res = 0 for box in answer: res += min(box) return res * m 비교적 간단한 문제였다.왜헤맸지
36. 모의고사
2024. 7. 14. 17:22
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 15분 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] x, y, z = 0, 0, 0 for i in range(len(answers)): if one[0] == answers[i]: x += 1 if two[0] == answers[i]: y += 1 if three[0] == answers[i]: z += 1 one.append(one.pop(0)) two.append(..
35. 2016년
2024. 7. 14. 03:53
프로그래머스/Lv. 1
푸항항유형 : (짜증나는) 구현풀이 시간 : 10분 def solution(a, b): answer = '' day = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED'] monthsday = [30 for i in range(12)] for i in range(len(monthsday)): if i 6: if i % 2 == 1: monthsday[i] += 1 days = b for j in range(a-1): days += monthsday[j] return day[days%7] 마지막에 j를 i로 잘못써서 헤맸다. 제발 실수..실수해도 빨리 찾자
34. 폰켓몬 (set에 대하여)
2024. 7. 14. 03:37
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 5분 1. 나의 풀이 def solution(nums): answer = 0 sort = [] for n in nums: if n not in sort: sort.append(n) goal = len(nums) // 2 exist = len(sort) if goal list를 만들어 중복 없는 폰켓몬 넘버 배열을 만들고, 그것의 길이와 goal 중 min을 return하도록 했다. 코드 최적화를 거치면 아래와 같겠다. def solution(nums): answer = 0 sort = [] for n in nums: if n not in sort: sort.app..
33. 카드 뭉치
2024. 7. 14. 03:25
프로그래머스/Lv. 1
유형 : 스택? 구현풀이 시간 : 10분 def solution(cards1, cards2, goal): while True: if cards1 and cards1[0] == goal[0]: del cards1[0] del goal[0] if not goal: return "Yes" elif cards2 and cards2[0] == goal[0]: del cards2[0] del goal[0] if not goal: return "Yes" else: return "No" ..
32. 콜라 문제 ★
2024. 7. 14. 03:10
프로그래머스/Lv. 1
유형: 재귀 (X) 구현풀이 시간 : 10분 정도? -> 재귀 깊이에 걸림 1. 나의 풀이 import syssys.setrecursionlimit(10000)def givecola(a, b, remain): if remain 재귀함수가 바로 떠올라서 재귀로 풀었는데 계속 12번 테케에서 걸렸다.재귀함수로 풀이하는 바람에 재귀 깊이가 너무 깊어져서 그런 거였다..실전에서 이러면 빠르게 다른 풀이로 바꿔야 할 것 같다. import syssys.setrecursionlimit(10000) sys.setrecursionlimit 함수를 이용해 재귀 스택 깊이를 더 늘릴 수 있긴 하다.그래도 반복문으로 풀이하는 게 좋아보임. 2. 반복문 풀이비슷한 코드를 반복문으로 작성하면 된다. 완전 쉽게 풀림..