알고리즘 문제를 풀면 풀수록 느끼는거지만, 딕셔너리나 리스트에 대한 개념이 확실히 있어야 좀 더 빠르고 쉽게 문제를 풀이 할 수 있는 것 같다... + lambda 함수도 자유자재로 사용할 줄 알면 좋을듯! 지난 번 이용한 dictionary 에서의 try, except 구문을 이용해 같은 수의 주사위가 몇번 반복되는지를 딕셔너리를 이용하여 찾았고, 이를 바탕으로 3개 다 맞은 경우, 2개만 맞은 경우, 1개만 맞은 경우의 수를 찾아 점수를 계산하는 알고리즘을 작성해보았다. n = int(input()) num_dict = {} for i in range(n): num = list(map(int, input().split())) res = {} for j in num : try : res[j] += 1 ..
Reverse, isPrime 함수를 만들어서 풀이하는 문제. reverse 함수는 10의 n승 만큼을 길이를 받아 원래 수 x에서 나누어 몫을 계산하였고 그 값을 계속 제외해 나가면서 a를 구하고 a를 number에 더해주었음. n = int(input()) num_list = list(map(int, input().split())) def reverse(x): num_digit = list(str(x)) digit_list = [] num = 0 for i in range(len(num_digit)): a = x // (10**(len(num_digit)-(i+1))) x = x - a * (10**(len(num_digit)-(i+1))) num += a * (10**(i)) num = int(nu..
소수 구하기 (에라토스 테네스 체) 에라토스 테네스 체 : 걸러낸다는 뜻 다음과 같이 CH 라는 리스트에 n까지의 숫자가 들어있다고 가정할 때, 소수만 카운트 하고 싶다면, 1을 제외하고 2부터 for문을 돌린다음 i의 배수가 되는 부분들을 지워나가면서 0으로 남은 부분만 카운트 하면 된다! n = int(input()) def decimal(x) : dec_sum = [] for i in range(1, x+1): if (x % i == 0): dec_sum.append(i) if len(dec_sum) == 2: return x else : return None cnt = 0 for i in range(1, n+1): if decimal(i) == i : cnt += 1 print(cnt) n = i..
자릿수의 합이 최대인 자연수 출력하기 n = int(input()) num_list = input().split() a = [] res = {} def digit_sum(x) : return sum(x) for i in num_list: for j in i : j = int(j) a.append(j) res[i] = digit_sum(a) a = [] sorted_res = sorted(res.items(), key = lambda x : x[1] ,reverse=True) arrMin = float('-inf') for i in range(len(sorted_res)): if sorted_res[i][1] > arrMin : arrMin = sorted_res[i][1] print(sorted_res[..
두 개의 정다면체를 던져서 그 합을 구했을 때 나올 수 있는 큰 수 찾기 n, m = map(int, input().split()) sum_list = [] for i in range(n): for j in range(m): sum = (i+1) + (j+1) sum_list.append(sum) res = {} for i in sum_list: try : res[i] += 1 except : res[i] = 1 sorted_dict = sorted(res.items(), key = lambda x : x[1], reverse = True) arrMin = float('-inf') result = [] # 딕셔너리 내 원소 비교 for i in range(len(sorted_dict)): if (sort..
Try, Except 구문 이용 동일 원소 개수 세기 알고리즘 문제를 풀다 보면 리스트에서 동일 원소의 개수를 셀 일이 있는데, 이 때 try, except 구문을 이용하면 편리하다. try : 예외가 발생할 가능성이 있는 코드 except : 예외가 발생했을 때 실행할 코드 결과를 확인하기 위해서는 딕셔너리 형태의 출력으로 받아보면 된다. num_list = [10, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 3, 3, 2] # result dictionary 생성 res = {} for i in num_list : try : res[i] += 1 except : res[i] = 1 print(res) >>> {10: 1, 9: 2, 8:..