프로그래머스/LV1

    [Python] 폰켓몬

    문제 참고 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 작성 def solution(nums): answer = 0 num_set = list(set(nums)) half_num = int(len(nums) / 2) if len(num_set) > half_num: answer = half_num else: answer = len(num_set) return answer - nums에 중복되는 폰켓몬을 제거하여 num_set에 저장 - half_num은 최대로 가져갈 수 있는 폰켓몬의 수이다. - 만약 nums의 중복이 적어 half_num보다 많..

    [Python] 소수 찾기

    문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 입출력 예 n result 10 4 5 3 코드 작성 def solution(n): num = set(range(2, n + 1)) for i in range(2, int((n ** 0.5)) + 1): if i in num: num -= set(range(2 * i, n + 1, i)) return len(num) - 아리토스테네스의 체를 이용한다. - 가장 큰 수의 제곱근까지만 반복문을 만들어서 배수를 하나씩 지워나가면 된다.

    [Python] 모의고사

    문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..

    [Python] 소수 만들기

    문제 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 입출력 예 nums result [1, 2, 3, 4] 1 [1, 2, 7, 6, 4] 4 코드 작성 from itertools import combinations def solution(nums): answer = 0 temp_list = lis..

    [Python] 실패율

    문제 참고 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 작성 from heapq import heappush, heappop def solution(N, stages): answer = [] user_num = len(stages) dp = [0 for _ in range(N + 2)] for i in stages: dp[i] += 1 result = [] for i in range(1, len(dp)): if dp[i] == 0: heappush(result, (0.99, i)) else: heappush(result, (-(dp[i] / use..

    [Python] [1차] 다트 게임

    문제 참고 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 작성 def solution(dartResult): answer = 0 num = 0 count = -1 num_list = [0 for _ in range(3)] for r in dartResult: try: if float(r).is_integer(): if num == 1 and int(r) == 0: num = int(10) else: num = int(r) count += 1 except: if r == 'S': num = num ** 1 num_list[count] = num eli..

    [Python] 로또의 최고 순위와 최저 순위

    문제 참고 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 작성 def solution(lottos, win_nums): answer = [] count = 0 zero = 0 for lotto in lottos: if lotto == 0: zero += 1 continue if lotto in win_nums: count += 1 if count >= 1: answer.append(7-(count + zero)) answer.append(7-count) elif count == 0 and zero != 0: answer.append(7 - zero)..

    [Python] 체육복

    문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..