목록algorithm:inflearn (14)
하루한줄 코딩일기

인프런 > 파이썬 알고리즘 문제풀이 섹션 2.7 소수(에라토스테네스 체) 👊 내 문제 풀이 가장 원초적으로 풀어봤다. 숫자 i를 2 이상, i 미만의 수로 나눠 나머지가 0인 경우가 나오지 않을 경우, i는 소수라고 판단한다. 소수라고 판단하기 위해선 전체 경우의 수를 탐색해야 하기 때문에 시간 복잡도가 구린 코드다. n=int(input()) sosu = [2] is_sosu=False for i in range(3,n):#2는 소수, 3부터 소수 검사 for j in range(2,i): if i%j==0: is_sosu=False break else: is_sosu=True if is_sosu == True: sosu.append(i) print(len(sosu)) 채점 결과 역시 시간 초과로 실패..

인프런 > 파이썬 알고리즘 문제풀이 섹션 2.6 자릿수의 합 👊 내 문제 풀이 자릿수의 합을 돌려주는 digit_sum 함수를 작성하는 문제다. 최대한 내장함수를 사용해 간단하게 코드를 작성하려고 했다. 숫자 x를 string 처리 한 후, map 함수를 사용해 각 자릿수를 나누고 다시 int형으로 변환 한다. 다음 sum 함수로 합을 구해 각 자릿수의 합을 return 한다. def digit_sum(x): return sum(list(map(int,str(x))))#list로 변환하지 않고 sum 사용 가능 N = int(input()) arr = list(map(int, input().split())) max = -9999999 answer = 0 for i in arr: dsum = digit_s..

인프런 > 파이썬 알고리즘 문제풀이 섹션 2.5 정다면체 👊 내 문제 풀이 arr 리스트에 N+M 의 모든 경우의 수를 저장하고, Counter를 사용해 각 숫자 별 발생 빈도를 확인한다. arr 리스트의 길이 만큼 반복문을 돌며, value가 가장 높은 발생 빈도와 일치할 경우 해당 key값을 출력한다. import collections n, m = map(int, input().split()) arr = [] for i in range(1,n+1): for j in range(1,m+1): arr.append(i+j)# N + M의 모든 경우의 수 저장 arr = collections.Counter(arr)# 숫자와 발생 빈도를 딕셔너리에 저장 max = max(sorted(list(arr.value..

인프런 > 파이썬 알고리즘 문제풀이 섹션 2.4 대표값 👊 내 문제 풀이 1. 평균값을 구한다. (round() 함수를 사용해 반올림) 2. |평균과의 점수차| 의 최솟값을 min 변수에 저장한다. 3. |평균과의 점수차| 가 min과 같은 경우, temp 리스트에 점수를 저장한다. 4. temp 리스트의 점수들 중 가장 높은 수를 구해 해당 점수를 보유한 학생의 번호를 출력한다. (여러 명일 경우 앞 번호의 학생을 출력한다.) n = int(input()) scores = list(map(int, input().split())) average = round(sum(scores)/n)#평균 반올림 min = 100 temp = [] # '평균과의 점수차 절대값'이 가장 작은 경우를 구해 min 변수에 저..

인프런 > 파이썬 알고리즘 문제풀이 섹션 2.3 K번째 큰 수 👊 내 문제 풀이 3중 for문을 돌며, 카드 3장을 뽑았을 때 나올 수 있는 모든 합의 경우를 answer 리스트에 저장한다. (단, 이미 존재하는 숫자일 경우 저장하지 않는다.) answer 리스트에는 나올 수 있는 모든 합의 경우가 중복 없이 저장되고, 이를 정렬한 후 K번째로 큰 수를 출력한다. n, k = map(int, input().split())#첫 줄에 주어진 n, k 입력받기 cards = list(map(int, input().split()))#카드열 입력받기 answer=[] for i in range(n): for j in range(i+1, n): for m in range(j+1, n): if (cards[i]+ca..

인프런 > 파이썬 알고리즘 문제풀이 섹션 2.2 K번째 수 👊 내 문제 풀이 첫 줄은 케이스의 개수를 알려준다. 첫 줄을 읽어와서 numOfCase라는 변수에 저장한다. 케이스 개수 동안 n, s, e, k에 해당하는 숫자들을 저장하고, arr 리스트에 그 다음 줄인 숫자열을 저장한다. 숫자열 arr을 s부터 e번째 수까지 자른 후 정렬하고, 정답을 출력한다. numOfCase=int(input())#케이스의 개수 for i in range(numOfCase): n, s, e, k = map(int, input().split())#띄어쓰기를 기준으로 읽어들임 arr = list(map(int, input().split()))#리스트에 숫자열 저장 arr = arr[s-1:e]#s번째부터 e번째까지의 수 ..

인프런 > 파이썬 알고리즘 문제풀이 섹션 2.1 K번째 약수 👊 내 문제 풀이 먼저, 숫자 n의 약수들을 구한다. n을 n 이하의 숫자 i로 나누었을 때 나누어 떨어질 경우, 숫자 i는 n의 약수이므로 answer 리스트에 저장한다. n의 약수들 중 k번째 숫자를 출력해야 하므로, answer[k-1] 를 출력한다. 단, n의 약수의 개수가 k개보다 적어서 k번째 수가 존재하지 않을 경우 -1을 출력한다. #입력처리 n, k = map(int, input().split()) answer = [] for i in range(1, n+1): if n%i == 0: answer.append(i) if len(answer) >= k:#k번째 수가 존재하면 print(answer[k-1]) else: print(..