문제풀이

[문제] https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr [코드] def check(a, b, c): total = a + b + c for i in range(2, total // 2 + 1): if total % i == 0: return False return True def solution(nums): answer = 0 for i in range(0, len(nums) - 2): ..
[문제] https://programmers.co.kr/learn/courses/30/lessons/12930 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr [풀이] 1. split 함수 문자열.split('구분자') split 함수는 문자열을 일정한 규칙으로 잘라서 리스트로 만들어 주는 함수이다. 근데 문제를 풀다가 이해가 안가는 한가지.. 해당 문제의 조건이 "각 단어는 하나 이상의 공백 문자로 구분되어있다" 라고 되어있는데 왜 split() 이 아닌 split(" ") 일까?.. split..
[문제] https://programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr [풀이] 이 문제의 정렬 조건 각 문자열의 인덱스 n번째 글자 기준 오름차순으로 정렬 인덱스 n의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치 일단 문제가 정렬문제이고 다중 조건인 경우, 람다식을 사용한 정렬을 이용해 문제를 해결한다. a = [(1, 2)..
[문제] https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr [풀이] 하샤드 수란 x 자릿수 합으로 x가 나누어 지는 수 이다. 18의 경우 18 -> 1 + 8 = 9, 18 % 9 = 0 이기 때문에 18은 하샤드 수이다. 11의 경우 11 -> 1 + 1 = 2, 11 % 2 != 0 이기 때문에 11은 하샤드 수가 아니다. 문제는 10의 자리 숫자와 1의 자리 숫자를 어떻게 효율..
[문제] https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr [풀이] 이 문제는 enumerate만 알면 쉽게 풀 수 있는 문제이다. enumerate 반복문 사용 시 몇 번째 반복문인지 확인할 수 있다 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환 또, 시험은 최대 10,000 문제로 구성되어 있기 때문에 각 학생이 찍는 패턴을 반복하기 위해 % (나머지) 를 사용한다. 1번 학생의 0번 답이 맞았는지 구..
[문제] https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr [풀이] 각 직사각형 가로 세로 값 통틀어 큰 수들 중 가장 큰 수, 작은 수들 중 가장 큰 수를 구하면 된다. 문제에 나온 예로 구해보자면 _max 리스트와 _min 리스트를 선언한 후 [60, 50] 중 큰 값인 60을 max에, 작은 값인 50을 min에 담는다. 앞에 설명한 방법과 같이 모든 명함의 값을 정리하면 _max = [60, 70, 60, ..
[문제] https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr [풀이] 인덱스가 중요한 문제이다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 3. 2에서 나온 배열의 3번째 숫자는 5입니다. 문제 설명에 나온 예로 일반화를 적용해 보았다. 1. array[1: 5]로 슬라이싱 할 ..
[문제] https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr [풀이] 최대한 많은 부서에게 물품을 지원해야 하기 때문에 신청 금액이 적은 부서부터 지원을 해야 한다. 따라서 부서별 신청 금액 리스트를 오름차순으로 정렬한 뒤 예산이 리스트 원소 전체 합보다 적은 경우, 리스트의 마지막 원소를 삭제해주었다. 마지막으로 반복문 조건이 통과된 리스트의 길이를 반환해준다. [코드] def solution(d, budget):..
[문제] https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr [풀이] 이 문제의 핵심은 제한사항의 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다. 부분이라고 생각한다. 한 학생이 lost와 reserve 리스트 둘 다에 포함된다면 그 학생은 두 리스트에서 빼주어야 한다. 집합..
서채리
'문제풀이' 카테고리의 글 목록 (6 Page)