목록Algorithm (37)
하루한줄 코딩일기
프로그래머스 > 소수 만들기 문제 설명 주어진 숫자 중 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 입출력 예 설명 입출력 예 #1 [1,2,4]를 이용해서 7을 만들 수 있습니다. 입출력 예 #2 [1,2,4]를 이용해서 7을 만들 수 ..
프로그래머스 > 예산 문제 설명 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요. 제한 조건..
프로그래머스 > 약수의 개수와 덧셈 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한 조건 1 ≤ left ≤ right ≤ 1,000 입출력 예 left right result 13 17 43 24 27 52 입출력 예 설명 입출력 예 #1 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다. 수 약수 약수의 개수 13 1, 13 2 14 1, 2, 7, 14 4 15 1, 3, 5, 15 4 16 1, 2, 4, 8, 16 5 17 1, 17 2 따라서, 13 + 14 + 15 - 16 + ..
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.4 두 리스트 합치기 👊 내 문제 풀이 + 혹은 __add__ 메서드를 이용해 두 리스트를 결합한 후 오름차순으로 정렬한다. n1 = int(input()) list1 = list(map(int, input().split())) n2 = int(input()) list2 = list(map(int, input().split())) # list1 + list2 후 정렬 list1 = sorted(list1+list2) for i in list1: print(i,end=" ") 채점 결과 💡 강의 해답 이 문제는 이미 정렬되어 입력되기 때문에, 이를 활용하는 것(O(n))이 sort() 내장함수를 쓰는 것(O(nlogn))보다 시간복잡도가 좋다. n=int(inp..
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.3 카드 역배치 👊 내 문제 풀이 card[a : b+1] 를 한 결과에 다시 [ : : -1] 을 해서 해당 구간을 뒤집으려고 했으나 한 번에 이어서 작성해도 정상적으로 실행됐다. card = [] for i in range(21): #카드 채우기 card.append(i) for i in range(10): #카드 구간 뒤집기 a, b = map(int, input().split()) card[a:b+1] = card[a:b+1][::-1] for n in card[1:]: #카드 출력하기 print(n,end=' ') 채점 결과 💡 강의 해답 0부터 20까지의 수로 채워진 리스트를 생성하는 코드는 list(range(21))로 간단하게 작성할 수 있다. ..
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.2 숫자만 추출 👊 내 문제 풀이 얼마 전 풀었던 카카오 신규 아이디 추천 문제에서 공부한 정규표현식 re.sub()을 활용했다. 숫자(\d)가 아닐(^) 경우 빈 문자열로 치환하여 제거하고, 문자열이 0으로 시작하는 동안 가장 앞의 0을 제거한다. 그 후 최종 숫자와 그의 약수의 개수를 구하여 출력한다. import re txt = input() cnt = 0 txt = re.sub('[^\d]','',txt) #숫자가 아닐 경우 제거 while txt.startswith('0'): #0으로 시작할 경우 제거 txt = txt[1:] # txt의 약수의 개수 구하기 for i in range (1,int(txt)+1): if int(txt) % i == 0:..
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.1 회문 문자열 검사 👊 내 문제 풀이 회문 검사 시 대소문자를 구분하지 않기 때문에 먼저 문자열을 모두 소문자로 변환한다. 문자열 text와, text를 reverse한 값 text[ : : -1]이 동일할 경우 YES를 출력, 다를 경우 NO를 출력한다. n=int(input()) for i in range(n): text = input().lower() if text == text[::-1]: print("#%d YES" %(i+1)) else: print("#%d NO" %(i+1)) 채점 결과 💡 강의 해답 풀이 #1 n=int(input()) for i in range(1, n+1): str=input() str=str.upper() for j in..