수학 9

[n1755] 숫자 놀이 in python

sorted, lambda, dictionary를 이용해서 풀 수 있었던 정렬 및 문자열 문제! 리스트에 숫자와 문자를 같이 넣어주는 생각을 바로 떠올리지 못했음! m, n = map(int, input().split()) dic = {'1': 'one', '2': 'two', '3': 'three', '4': 'four', '5': 'five', '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine', '0': 'zero'} temp = [] answer = [] for i in range(m, n + 1): answer.append([i, ''.join(dic[k] for k in str(i))]) answer.sort(key=lambda x:x[1]) for i..

[n15965] k번째 소수 in python

무작정 for문을 돌리게 되면 시간초과가 날 것 같았다. 그래서 에라토스테네스의체를 이용하여 문제를 풀었다. 에라토스테네스의 체에 대한 이해 먼저 해야하는데 https://wikidocs.net/21638 2. 소수 구하기 - 에라토스테네스의 체 # 소수 : 1과 그 수 자신 이외의 자연수로는 나눌 수 없는 자연수이다. # 코딩 소수인지 검사하는 함수(isPrime)를 만든다. 1부터 100 사이의 소수를 구하는 ... wikidocs.net 위 링크를 참고하면 좋을 것 같다. 리스트를 하나 생성한다. 그리고 2부터 시작해서 2의 배수는 모두 지우고 3의 배수 모두 지우고 5의 배수 모두 지우고 ... 이런식으로 소수의 배수들을 모두 지워준다. k = int(input()) array = [1 for _..

카테고리 없음 2021.11.09

[n8394] 악수 in python

예제문제를 보다보니 점화식이 보였다 n=1일땐 1 n=2일땐 2 n=3일땐 3(1+2) n=4일땐 5 (2+3) n=5일땐 8 (3+5) 수가 매우 커질 수 있기 때문에, 마지막 자리만 출력한다. > dp[-1]%10을 해줘야 올바른 출력값이 나오게 된다. n = int(input()) dp = [0 for _ in range(n + 1)] dp[1] = 1 dp[2] = 2 for i in range(3, n + 1): dp[i] = dp[i - 1] % 10 + dp[i - 2] % 10 print(dp[-1]%10) 시간이 오래 걸려서 더 좋은 코드를 찾아보았다. dp 배열을 쓰지 않아도 변수 2개로 충분히 구할 수 있었다. (스왑) 그리고 %60을 왜 써주는 지 아직 잘 모르겠지만.. 좀 더 연구..

[n9742] 순열 in python

재귀함수 너무 어렵다 ㅠㅠ.. 매번 풀어도 헷갈리고 적응 안되는 것들 중 하나가 재귀함수 :( 너무 지저분하게 코드를 짠 것 같아서 좀 더 고민해보고 찾아봐야겠다 ㅠㅠ 일단은 for문 안에서 1차적으로 첫번째 숫자를 고른 뒤 permu 함수를 실행한다. permu 함수 내에서 for문을 또 따로 돌려주고 그 안에서 재귀함수를 호출하여 순열을 찾아나가면 된다. 만약 현재 값이 입력값과 개수가 똑같고 answer_num이 n과 같다면? 답을 찾은것이다! answer_num = 0 answer = '' def permu(n, cnt): global answer_num global answer if len(answer) == len(word): answer_num += 1 if answer_num == n: r..

[n1292] 쉽게 푸는 문제 in python

최대한 반복문을 줄이고자 했던 나의 노오력.. temp값이 1이면 반복문 1번 2이면 반복문 2번 이런식으로 answer 배열에 값을 채워넣었다! [1,2,2,3,3,3...] 그래서 answer 길이가 끝을 나타내는 정수(입력값)보다 커지면 반복문을 종료하고 합을 도출해내는 방식으로 구현하였다. f, e = map(int, input().split()) temp = 1 answer = [] while len(answer) < e: for _ in range(temp): answer.append(temp) temp += 1 print(sum(answer[f-1:e]))

[n1094] 막대기 in python

합 > x 1. 가장 짧은 막대기를 절반으로 나눈 막대기를 리스트에 넣는다. (원본 막대기는 삭제) 2. 리스트 오름차순으로 정렬 3. 가장 짧은 막대기의 절반을 제외한 나머지 합계가 x보다 크거나 같으면? 가장 짧은 막대기의 절반 하나를 제거한다. 이 과정은 합==x일 때 종료 x=int(input()) array=[64] while sum(array)>x: # 합>x # 1번 min_value=min(array) # 가장 짧은 막대를 절반으로 나눈다. array.remove(min_value) array.append(min_value//2) array.append(min_value//2) array=sorted(array) if sum(array)-min_value//2 >=x: array.remov..

[n14916] 거스름돈 in python

동전의 개수가 최소? 11 12 13 14 15 16 17 18 19 20 숫자 1과 3만 제외하면 어떤 숫자든 5랑 2로 나누어짐 1이랑 3만 안 될뿐!! 17원 5원 * 3개 , 2원 * 1개 13원 5원 * 2개 x 5원 * 1개, 2원 * 4개 11원 5원 * 2개 , 2원 * 1개 , 1이 초과된다 x 5원 * 1개 , 2원 * 3개 n = int(input()) cnt = 0 temp = n % 5 # 나머지 if n == 1 or n == 3: print(-1) exit(0) elif temp % 2 == 0: # 2로 딱 떨어지면 cnt = n // 5 + temp // 2 print(cnt) exit(0) else: cnt = n // 5 - 1 + (temp + 5) // 2 print..

카테고리 없음 2021.10.08

[n13900] 순서쌍의 곱의 합 in python

https://www.acmicpc.net/problem/13900 13900번: 순서쌍의 곱의 합 첫 번째 줄에는 입력 받을 정수의 개수 N(2 ≤ N ≤ 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다. www.acmicpc.net 1. 메모리초과 -> 조합 함수 사용 # from itertools import permutations, combinations # # num = int(input()) # inp = list(map(int, input().split())) # for i in inp: # arr=list(combinations(i,2)) # arrs = list(combinations(inp, 2)) # result ..