목록Python (79)
JiSoo's Devlog
dd = {"A+":4.5, "A0":4.0, "B+":3.5, "B0":3.0, "C+":2.5, "C0":2.0, "D+":1.5, "D0":1.0, "F":0.0} t = 0 r = 0 for i in range(20): a, b, c = input().split() b = float(b) if c != 'P': t += b r += b * dd[c] print('%.6f' % (r/t)) r = ['A+', 'A0', 'B+', 'B0', 'C+', 'C0', 'D+', 'D0', 'F'] g = [4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0] 리스트나 딕셔너리 둘 다 사용해 풀 수 있다 학점 총합을 답는 t와 학점*과목평점의 총합을 담는 r을 선언하고 0으로 초기화..
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로 정렬 후 첫 번째 거 출력
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 이렇게 해서 리스트 요소를 한 줄로 출력도 가능
n = input() if "0" not in n: print(-1) else: s = 0 for i in range(len(n)): s += int(n[i]) if s % 3 != 0: print(-1) else: sn = sorted(n, reverse=True) an = "".join(sn) print(an) 30의 배수는 3의 배수이면서 10의 배수이기도 하다 10의 배수가 되려면 마지막 일의 자리가 반드시 0으로 끝나야 한다 3의 배수가 되려면 각 자릿수의 합이 3의 배수이면 된다 0이 들어가지 않는다면 -1 출력 30의 배수가 되는 가장 큰 값을 출력해야 하기 때문에 내림차순으로 정렬만 해주면 된다