목록코테준비 (91)
JiSoo's Devlog
정수 내림차순sort().reverse() map() 메서드는 배열 내의 모든 요소 각각에 대해 주어진 함수를 호출한 결과를 모아 새로운 배열 반환배열의 각 요소에 대해 실행한 callback의 결과를 모든 새로운 배열을 반환const array1 = [1, 4, 9, 16];const map1 = array1.map((x) => x * 2);console.log(map1);// Array [2, 8, 18, 32]arr.map((e) => { if (e != min) { answer.push(e); } }); 배열.sort()파라미터로 a, b 두 개의 요소를 입력받을 경우리턴값 리턴값 > 0 : b가 a보다 앞에 오도록리턴값 = 0 : a와 b의 순서 변경 X 배열.sort((a..
몫 구하기 1. parseInt 2. Math.floor 두 자연수의 곱 = 최대공약수 x 최소공배수 최소공배수 = 두 자연수의 곱 / 최대공약수 round()로 소수점 n자리 반올림 // 소수점 첫째자리 re = Math.round(num * 10) / 10; // 소수점 둘째자리 re = Math.round(num * 100) / 100; 문자열을 배열로 자르기 - split() 메소드 문자열의 모든 문자열을 분할하려면 매개변수로 구분자를 전달해 주면 된다 const str = 'Hello'; str.split(); > ['Hello'] const str = 'Hello'; str.split(''); >> ['H', 'e', 'l', 'l', 'o'] 배열의 모든 요소 연결해 하나의 문자열로 만들려면..
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으로 초기화..
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로 정렬 후 첫 번째 거 출력
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식을 이용해 한 번에 여러 개의 값을 지정해 정렬 ! 길이, 자릿수의 합, 사전 순으로 정렬했다