Algorithm PS👩🏻💻/프로그래머스
-
[프로그래머스] 12987번: 숫자게임(Python)Algorithm PS👩🏻💻/프로그래머스 2024. 5. 23. 14:44
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다.먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다.각 사원은 딱 한 번씩 경기를 합니다.각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수를 공개합니다. 그때 숫자가 큰 쪽이 승리하게 되고, 승리..
-
[프로그래머스] 17680번: 캐시(Python, deque)Algorithm PS👩🏻💻/프로그래머스 2024. 4. 19. 02:49
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음엔 아래와 같이 직접 cacheSize를 측정했는데,, deque([], maxlen=3) 처럼 정의하면 append 했을때 maxlen 사이즈를 넘어가면 알아서 왼쪽 원소를 pop한 후 append 한다. from collections import deque def solution(cacheSize, cities): answer = 0 n = len(cities) q = deque..
-
[프로그래머스] 두 정수 사이의 합(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 23. 15:12
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12912 풀이 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 개념 & 이론 등차수열의 합 이용 : 항의 수 * (초항 + 말항) // 2 코드 def solution(a, b): if a > b: a, b = b, a return sum(range(a, b+1)) 이렇게 해도 시간 복잡도는 O(n)이기에 시간이 걸린다. 최적 코드 def solution(a, b): return (abs(a-b)+1)*(a+b)//2 위의 등차..
-
[프로그래머스] 나누어 떨어지는 숫자 배열(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 23. 15:09
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12910 풀이 풀이 설명 [출처] https://wikidocs.net/22803 filter(): 특정 조건으로 걸러, 걸러진 요소들로 iterator객체를 만들어서 리턴해주는 함수. filter를 사용할 땐, list로 다시 감싸줘야 편하다. answer = list(filter(lambda x : x < 5, arr)) 코드 def solution(arr, divisor): answer = [] answer = list(filter(lambda x: x % divisor == 0, arr)) if not answer: answer.append(-1) else: answer.sort()..
-
[프로그래머스] 기사단원의 무기(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 10. 02:00
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/136798 코드 def solution(number, limit, power): arms = [] for n in range(1, number + 1): temp = [] for i in range(1, int(n ** 0.5)+1): if n % i == 0: temp.append(i) if i ** 2 != n: temp.append(n//i) arms.append(power if len(temp) > limit else len(temp)) return sum(arms)
-
[프로그래머스] 개인정보 수집 유효기간(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 10. 01:59
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150370 후기 : 처음엔 약관의 기간이 월 기준이라 Month, year 가 12월이 넘어가면 변경하고, day는 유지하는 식으로 했지만, 그래도 결국엔 변경된 날짜 & 오늘 날짜를 비교해야 하므로, datetime을 쓰다가 결국 시간 초과가 났다. (계산, datetime 쓰기 위해 형변환 많이써서 그런듯..) 각 달의 날짜 수(day)가 동일하면, 날짜 비교 시 가장 빠른 방법은 날짜 수 연산이다. 코드 def solution(today, terms, privacies): answer = [] dict_term = {} for term in terms: k, v = term.split..
-
[프로그래머스] 타켓 넘버(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 10. 01:58
문제 링크 - 타겟 넘버(43165) 문제 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다..