목록분류 전체보기 (167)
JiSoo's Devlog
from itertools import combinations n, s = map(int, input().split()) a = list(map(int, input().split())) c = 0 for i in range(1, n+1): k = combinations(a, i) for j in k: if sum(j) == s: c += 1 print(c) combinations 함수로 배열에서 뽑을 수 있는 모든 조합 구해주기 조합의 합이 s와 같으면 +1
n = int(input()) dp = [0]*1001 dp[0] = 1 dp[1] = 1 for i in range(2, n+1): dp[i] = dp[i-1] + 2 * dp[i-2] print(dp[n] % 10007) n=3 일 때는 n=2의 타일이 들어있고 n=1의 타일이 2번씩 들어있다 n=4 일 때는 n=3의 타일이 들어있고 n=2의 타일이 2번씩 들어있다 점화식은 dp[i] = dp[i-1] + 2 * d[i-2]
n = int(input()) d = [0]*(n+2) d[1] = 1 d[2] = 1 for i in range(3, n+2): d[i] = d[i-1] + d[i-2] print(d[n+1]%10007) 2xn 타일링 n=1 : 1 n=2 : 2 n=3 : 3 n=4 : 5 이런 식으로 가다 보면 규칙이 피보나치인 게 보인다 f(n) = f(n-1) + f(n-2) (n>=3)
a = input().split("-") s = 0 k = sum(map(int, a[0].split('+'))) if a[0] == '-': s -= k else: s += k for k in a[1:]: k = sum(map(int, (k.split('+')))) s -= k print(s) 입력받은 식에 임의의 괄호를 넣어 최솟값을 만들려면 - 부호가 나오면 그다음 - 부호가 나오지 전까지 괄호로 묶어버리면 된다 그래서 처음 입력받을 때 split("-") 사용 "+" 기준으로 끊고 정수화 한 후 리스트 안의 합 출력
import sys n = int(input()) a = [] for i in range(n): d = list(sys.stdin.readline().rstrip().split()) a.append((d[0], int(d[1]), int(d[2]), int(d[3]))) k = sorted(a, key=lambda x:(-int(x[1]), int(x[2]), -int(x[3]), x[0])) for j in k: print(j[0]) 1. 국어 내림차순 2. 영어 오름차순 3. 수학 내림차순 4. 영어 오름차순 학생 수만큼 입력받고 공백으로 데이터 구분하여 입력받아 리스트로 변환 이름만 string으로 두고 나머지 int로 변환해 a에 넣는다 정렬 기준을 key로 설정해 lambda 사용 lambda ..
n = int(input()) l = {} for i in range(n): a = input() if a not in l: l[a] = 1 else: l[a] += 1 t = max(l.values()) k = [] for a, n in l.items(): if n == t: k.append(a) print(sorted(k)[0]) 딕셔너리를 사용해 횟수를 계산하는 데 사용 딕셔너리에 이미 있다면 1 증가 아니면 그냥 1 key, value 반복문으로 value가 가장 큰 값을 저장한 변수와 같다면 k에 append 사전순으로 먼저 나오는 것을 출력해야 하기 때문에 sorted로 정렬 후 첫 번째 거 출력
Prop Drilling 이해 & 프로젝트 개요 프로퍼티 내리꽂기(prop drilling)는 여러 층의 컴포넌트를 거쳐 공유하고자 하는 데이터를 넘겨주는 것 다수의 컴포넌트를 거쳐 속성을 전달하는데 사실 대부분의 컴포넌트가 그 데이터를 직접적으로 필요로 하는 게 아니라 그저 자식 컴포넌트에게 전달하는 역할을 맡게 되는 것이다 Prop Drilling: 컴포넌트 구성으로 해결하기 프로퍼티 prop drilling의 해결책은 컴포넌트 합성 컨텍스트 API 소개 컴포넌트 합성 외에 다른 해결방안은 컨텍스트 API이다 리액트를 구성하는 하나의 특성이라고 할 수 있는데 컴포넌트나 컴포넌트 레이어 간의 데이터 공유를 용이하게 해 준다 리액트의 컨텍스트 기능은 컨텍스트 값을 생성하고 해당 값을 제공하고 컨텍스트를 ..
n = int(input()) def siri(a): r = 0 for i in a: if i.isdigit(): r += int(i) return r ser = [input().rstrip() for _ in range(n)] ser.sort(key = lambda x:(len(x), siri(x), x)) for j in ser: print(j) ser.sort(key = lambda x: (정렬기준1, 2, 3, ...)) lambda식을 이용해 한 번에 여러 개의 값을 지정해 정렬 ! 길이, 자릿수의 합, 사전 순으로 정렬했다
n = int(input()) a = {} for i in range(n): j = int(input()) if j in a: a[j] += 1 else: a[j] = 1 r = sorted(a.items(), key=lambda x : (-x[1], x[0])) print(r[0][0]) 딕셔너리를 사용하는 문제로 카드번호를 키로 저장하고 카드가 들어오면 value를 1씩 증가해 저장 {카드값: 카드개수} 입력받은 후 sorted 함수로 정렬해 주는데 value값 기준으로 내림차순 정렬하고 그 후 key값 기준 오름차순 정렬
n, m = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) c = a + b c.sort() # print(*c) print(' '.join(map(str, c))) join을 이용해 리스트 요소를 연결할 수 있다 ! 리스트의 요소가 모두 문자열일 때만 사용 가능하기 때문에 이 문자에서는 map으로 문자열로 만들어준 후 연결 *c 이렇게 해서 리스트 요소를 한 줄로 출력도 가능