Programmers
-
42889. 실패율(Python, Programmers Level 1)Programmers 2022. 9. 6. 01:13
문제 설명 스테이지별로 해당 (스테이지에 도달하였으나 클리어하지 못한 유저의 수 / 해당 스테이지에 도달한 유저의 수)를 구해, 실패율이 높은 순으로 반환합니다. 실패율이 같다면 낮은 스테이지를 먼저 반환하세요. 입력 N: 스테이지의 개수 stages: player들이 도달한 스테이지의 목록을 나타내는 1차원 리스트 풀이 stages의 수가 전체 플레이어의 수입니다. 따라서 해당 숫자를 기준으로 문제를 풀어갈 수 있습니다. stage를 하나씩 증가시켜가며, 해당 stage에서 멈춰선 플레이어를 탐색할 수 있습니다. stages[i]가 현재 탐색하는 stage와 동일하다면 이 player는 여기서 실패한 유저입니다. 이번 stage에서 실패한 player의 수를 현재까지 진행한 player의 수로 나눈다면..
-
42862. 체육복(Python, Programmers Level 1)Programmers 2022. 9. 6. 00:53
문제 설명 점심시간에 체육복 도난이 일어났습니다. 좌우 학생 중 여벌 체육복이 있는 학생의 체육복을 빌려 사용할 수 있다고 가정할 때, 체육복을 가질 수 있는 학생은 총 몇 명인가요? 입력 n: 학생의 수 lost: 체육복을 도난당한 학생의 번호가 들어있는 1차원 리스트 reserve: 여벌 체육복을 갖고있는 학생의 번호가 들어있는 1차원 리스트 풀이 거꾸로 생각합시다. 전체 학생 중 체육복을 도난당하였으며, 좌우 학생 중 여벌 체육복이 있는 학생이 없거나, 본인도 분실하여 빌려줄 여력이 없는 학생만 있는 경우를 구하고, 전체 인원에서 제외한다면, 체육복을 갖고 체육 수업에 참여할 수 있는 학생의 수를 구할 수 있습니다. 코드 더보기 def solution(n, lost, reserve): lost = ..
-
42840. 모의고사(Python, Programmers Level 1)Programmers 2022. 9. 6. 00:32
문제 설명 1, 2, 3번 수포자 중 가장 높은 점수를 받는 수포자를 반환하세요. 입력 answers: 정답이 들어있는 1차원 배열 풀이 수포자들은 일정 규칙으로 답을 찍습니다. 해당 규칙을 기준으로 수포자들이 어떤 결과를 찍었는지, 점수는 몇 점인지 알아낼 수 있습니다. 1번 수포자는 1, 2, 3, 4, 5 2번 수포자는 2, 1, 2, 3, 2, 4, 2, 5 3번 수포자는 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 를 규칙으로 답을 찍고 있습니다. i번 수포자는 n개마다 돌아가면서 찍는다는 부분을 기억하며 answers를 순회하여 각 수포자가 몇 문제를 맞았는지 종합하고, 최고 스코어를 구해 해당 스코어를 받은 수포자들의 번호들을 반환합니다. 코드 더보기 def solution(answe..
-
42748. K번째수(Python, Programmers Level 1)Programmers 2022. 9. 6. 00:21
문제 설명 commands로 입력받은 대로 입력받은 array를 자르고 정렬하여 k번째 수를 구합니다. 입력 array: 자연수가 들어있는 1차원 리스트 commands: 잘라야 할 구간과 인덱스가 리스트로 포함된 2차원 리스트 풀이 commands에 들어있는 command가 i, j, k라고 할 때, array의 i번째부터 j번째까지의 sub_array를 정렬하여 k번째 숫자를 결과에 넣어줍니다. index는 0부터 시작함에 유의합니다. 코드 더보기 def solution(array, commands): answer = [] for start_index, end_index, index in commands: sub_array = array[start_index - 1:end_index] answer.a..
-
42576. 완주하지 못한 선수(Python, Programmers Level 1)Programmers 2022. 9. 6. 00:13
문제 설명 마라톤에 참가한 선수 중 단 한명의 선수는 완주하지 못했습니다. 이 선수의 이름을 반환하세요. 입력 participant: 참가자의 이름이 들어있는 1차원 리스트 completion: 완주자의 이름이 들어있는 1차원 리스트 풀이 참가자의 이름은 중복될 수 있습니다. 따라서 참가자의 이름을 기준으로 나온 횟수를 구한 뒤, 참가자보다 적게 등장한 완주자를 찾아 해결할 수 있습니다. 코드 더보기 from collections import Counter def solution(participant, completion): p_counter = Counter(participant) c_counter = Counter(completion) answer = '' for p in p_counter: if p..
-
1845. 폰켓몬(Python, Programmers Level 1)Programmers 2022. 9. 5. 01:47
문제 설명 연구소의 폰켓몬 절반을 가져갈 수 있을 때, 가장 많은 종류의 폰켓몬을 선택하여 가져가는 경우, 폰켓몬의 수를 구하세요. 코드 연구소의 폰켓몬 절반의 수를 구합니다. half_count = len(nums) // 2 폰켓몬의 종류의 수는 중복을 제거한 폰켓몬의 수입니다. set 자료형으로 변환하여 중복을 제거하고, 종류의 수를 구합니다. group_count = len(set(nums)) 둘 중 작은 수를 반환합니다. return min(half_count, group_count) 더보기 def solution(nums): half_count = len(nums) // 2 group_count = len(set(nums)) return min(half_count, group_count) if ..
-
12977. 소수 만들기(Python, Programmers Level 1)Programmers 2022. 9. 5. 01:38
문제 설명 주어진 숫자 중 3개를 더했을 때 소수인 경우의 개수를 구합니다. 코드1 서로 겹치지 않는 인덱스의 숫자 세 개를 더한 수를 만듭니다. n = len(nums) for i in range(n): for j in range(1 + i, n): for k in range(1 + j, n): num = nums[i] + nums[j] + nums[k] if all(num % m != 0 for m in range(2, int(num ** 0.5) + 1)): answer += 1 2 ~ n ** 0.5 범위의 숫자로 나누어 떨어지는 숫자가 하나도 없는 경우가 소수인 경우입니다. if all(num % m != 0 for m in range(2, int(num ** 0.5) + 1)): answer ..
-
70128. 내적(Python, Programmers Level 1)Programmers 2022. 9. 4. 23:19
문제 설명 1차원 배열 a, b가 주어질 때, 동일한 위치의 요소를 서로 곱하고, 그 결과를 모두 더해 반환합니다. 코드 1. a, b에서 각 요소를 차례대로 가져옵니다. for i, j in zip(a, b): 그 수를 서로 곱해 결과에 더합니다. answer += i * j 더보기 def solution(a, b): answer = 0 for i, j in zip(a, b): answer += i * j return answer if __name__ == '__main__': result = solution([1, 2, 3, 4], [-3, -1, 0, 2]) print(3 == result, result) result = solution([-1, 0, 1], [1, 0, -1]) print(-2 =..