https://programmers.co.kr/learn/courses/30/lessons/86491?language=python3 코딩테스트 연습 - 최소직사각형 [[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 해설 : 명함을 수납할 수 있는 지갑을 만들기 위해 조사한 명함들의 가로, 세로 길이들이 주어진다. 이 길이들을 모든 명함을 수납할 수 있는 명함지갑의 최소 사이즈를 찾으면 된다. 풀이 : 명함을 수납할 때 옆으로 돌려서 수납할 수 있는 경우, 즉 가로와 세로의 길이가 바뀌어 보관하는 경우가 있기 때문에 가로와 세로 길이를 잘 조정해야..
https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 해설 : N명의 사람들이 토너먼트 대회를 진행하는데 A라는 사람과 B라는 사람이 있고, 모든 경기를 이긴다고 가정했을 때, 몇 번의 경기를 거쳐야 서로 만날 수 있는지 찾는 문제이다. 풀이 : 우선, 둘은 모든 경기에 이긴다고 가정했으므로 반드시 만나는 것이 보장되어있다. 따러서 while문을 사용해도 무한루프가 돌일은 없고, while..
https://programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 해설 : 자연수 n이 주어질 때, 이 수를 3진수로 변환하여 앞뒤로 뒤집고 다시 10진수로 변환해서 출력하면 된다. 풀이 : n진법으로 변환하는 change 함수를 구현하고 10진수 n을 3진수로 변환하였다. 원래 3진수로 변환할 때 나눈 몫과 나머지에서 reverse를 해주어야 하지만 어짜피 앞 뒤로 뒤집어야 하기..
https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 해설 : left와 right가 주어질 때 left부터 right까지의 정수 중 약수의 개수가 짝수인 것은 더하고 홀수인 것은 빼서 결괏값을 반환하면 된다. 풀이 : 약수의 개수를 구하는 cnt 함수를 만들고 for 문의 범위를 left부터 right 까지 각 정수마다 약수의 개수를 체크한다. 이 때, 개수가 ..
https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 해설 : 중복이 있는 수 배열이 주어진다. 이 때, 중복이 아닌(겹치지 않는) 숫자를 고르는 경우의 수를 출력하면 된다. 풀이 : 쉬운 문제이다. 중복을 제거하기 위해 수 배열을 set으로 처리해주었고 이 set의 길이와 전체 배열의 길이를 2로 나눈 값 중 작은 수를 출력하면 된다. 12def solution(nums): return min(len(set(n..
https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 해설 : 주어진 10진수를 124나라의 숫자 규칙에 맞추어 바꾸면 된다. 풀이 : 3으로 나눈 나머지와 몫을 이용해 진수를 변환한다. 1234567def solution(n): numbers = ['4', '1', '2'] answer = '' while n: answer = numbers[n % 3] + answer n = n // 3 - (n % 3 == 0) return answercs
https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 해설 : 주어진 배열의 숫자들을 3개씩 더하여 만들 수 있는 수들 중 소수의 개수를 찾는 문제이다. 풀이 : Python의 내장 함수인 itertools 중 combination으로 주어진 배열에서 3개씩 고르는 모든 조합을 찾고 이 조합들의 sum이 소수인지 아닌지 판별하는 isPrime함수를 통해 소수의 개수를 카운트하였다. 1234567..
https://programmers.co.kr/learn/courses/30/lessons/70128 코딩테스트 연습 - 내적 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 programmers.co.kr 해설 : a와 b 배열이 주어지는데 이 배열사이의 내적을 구하면 된다. 풀이 : 배열의 요소들을 zip 함수를 통해 묶음연산하고 이를 sum으로 더해줘서 해결하였다. 12def solution(a, b): return sum(x*y for x,y in zip(a,b))cs
https://programmers.co.kr/learn/courses/30/lessons/86051 코딩테스트 연습 - 없는 숫자 더하기 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. programmers.co.kr 해설: 간단한 수학 문제이다. 0부터 9까지의 수들 중 주어진 배열에 있는 숫자들을 제외하고 더한 값을 출력하면 된다. 풀이: 0부터 9까지 더한 총 합은 45이므로 45에서 배열의 합인 sum(list)를 빼주면 된다. 12def solution(numbers): return 45-sum(numbers)cs>