전체 글
-
77884. 3진법 뒤집기(Python, Programmers Level 1)Programmers 2022. 9. 6. 01:42
문제 설명 입력받은 10진수를 3진수로 변환 후 뒤집고 다시 10진수로 바꾸어 반환합니다. 입력 n: 10진수 풀이 10진수를 3진수로 변환하는 부분을 만드는 것이 가장 중요합니다. 몫이 없을 때 까지 10진수를 3진수로 계속 나눠가며 발생한 나머지를 역순으로 이어붙이면 3진수가 됩니다. 그렇다면 역순이 아닌 원래의 순서로 이어붙이면? 코드 더보기 def reversed_base_convert(num, base): share, remainder = divmod(num, base) if share == 0: return str(remainder) else: return str(remainder) + reversed_base_convert(share, base) def solution(n): reversed..
-
77884. 약수의 개수와 덧셈(Python, Programmers Level 1)Programmers 2022. 9. 6. 01:27
문제 설명 left ~ right까지의 수 중 약수의 개수가 짝수인 것은 더하고 홀수인 것은 뺀 수를 반환합니다. 입력 left: 자연수 right: 자연수 풀이 right가 범위에 포함되어야 하는 것에 주의하면서 풀어야 합니다. 약수는 쌍을 지을 수 있습니다. 예를 들어 15는 1과 15, 3과 5입니다. 예로 들어본 15는 짝수개의 약수를 갖고 있습니다. 홀수개의 약수를 갖고 있는 것은 동일한 두 수를 곱하여 해당 숫자가 나오는 경우입니다. 따라서 root(i)가 정수인지 확인한다면 약수의 개수가 짝수인지 쉽게 구분할 수 있습니다. 코드 더보기 def solution(left, right): answer = 0 for i in range(left, right + 1): if int(i ** 0.5) ..
-
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 ..