목록Python (79)
JiSoo's Devlog
n, m = map(int, input().split()) sum = 0 a = list(map(int, input().split())) b = [] for i in range(n): for j in range(i+1,n): for k in range(j+1, n): t = a[i]+a[j]+a[k] if t > m: continue else: b.append(t) print(max(b)) 카드 3개를 골라 합을 구해야 하니까 중첩 for문을 사용해 모든 경우의 수를 생각한다 m을 넘어가면 계속해서 합을 다시 구하고 넘지 않는다면 새로운 리스트 b에 저장하게 했다
n = int(input()) l = [] for i in range(n): [x, y] = map(int, input().split()) l.append([x, y]) sa = sorted(l) for i in range(n): print(sa[i][0], sa[i][1]) 리스트 안에 있는 리스트 인덱싱 a = [1, 2, ['a', 'b', ['life', 'is']]] 이 리스트에서 lift 문자를 꺼내고 싶다면 a[2][2][0] 리스트에 [a, b]을 추가시켜 주기 때문에 [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] 이렇게 나온다 이 리스트를 sorted 함수로 정렬시켜주고 정렬해 준 리스트를 for문으로 출력만 해주면 끝
n = int(input()) a = [] for i in range(n): a.append(list(map(int, input().split()))) for i in range(n): r = 1 # 기본순위 1로 고정 for j in range(n): if(a[i][0] < a[j][0] and a[i][1] < a[j][1]): r += 1 print(r, end=' ') 기본 순위를 r=1로 고정시키고 몸무게와 키 모두 두 값이 큰 경우에만 +1 되도록 설정
n = int(input()) d = 666 while n != 0: if '666' in str(d): n -= 1 if n == 0: break d += 1 print(d) * 7번째는 6666이 아니라 6660 * 8번째는 7666이 아니라 6661 브루트 포스 알고리즘 - 완전 탐색 알고리즘 중 하나 - 가능한 모든 수를 조합하는 방식 ex) n이 3이라면 n이 0이 아니니까 while문 반복 str(d) 안에 '666'이 있으니까 if문 반복 n이 2가 되고 d +=1 해주면 667 다시 if문으로 돌아가서 str(d)인 '667'에 '666'이 없으니까 d +=1 해주면 668 다시 if문으로 돌아가서 str(d)인 '668'에 '666'이 없으니까 d += 1 해주면 669 이 과정을 계속 ..
n = int(input()) s = 1 d = 6 room = 1 if n == 1: print(1) else: while(1): s = s + d room += 1 if n
n = int(input()) w = [] for i in range(n): w.append(input()) set_w = list(set(w)) sort_w = [] for i in set_w: sort_w.append((len(i), i)) re = sorted(sort_w) for l_w, w in re: print(w) 집합 자료형 set은 중복 허용 X, 순서 X -> 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용 sort의 기본값은 오름차순 정렬, reverse=True는 내림차순 sort의 key 옵션에 지정된 함수의 결과에 따라 정렬 ex) sort(key=len) sorted는 순서대로 정렬, 정렬된 리스트 반환 중복을 허용하지 않는 set을 이용해 중복 제거하고 집합 자료형은 {..
import sys n = int(sys.stdin.readline()) a = [0]*10001 for i in range(n): d = int(sys.stdin.readline()) a[d] += 1 for i in range(10001): if a[i] != 0: for j in range(a[i]): print(i) list에 새로운 값을 append 해서 푸는 방식을 사용하려 했지만 append를 하게 되면 메모리 재할당이 일어나 메모리를 많이 잡아먹는다고 한다 수의 범위가 1~10,000 이므로 계수 정렬 이용 계수 정렬 알고리즘 - 배열의 인덱스를 특정한 데이터의 값으로 여기는 정렬 방법 - 배열 크기는 데이터 범위 포함할 수 있게 설정 - 데이터가 등장한 횟수 센다 - 데이터의 개수가 많을..
a,b = map(int, input().split()) def gcd(a, b): while b != 0: r = a % b a = b b = r return a print(gcd(a, b)) def lcm(a, b): lcm = (a * b) // gcd(a, b) return lcm print(lcm(a, b)) 유클리드 호제법 - a를 b로 나눈 나머지 r - a와 b의 최대공약수는 b와 r의 최대공약수 - a와 b의 최대공약수는 b와 a%b의 최대공약수 gcd(24, 18) = gcd(18, 6) = gcd(6, 0) b가 0이 되는 순간이 최대공약수 6 최대공약수를 K라고 한다면 a = K * x b = K * y 이때 K가 최대공약수이기 때문에 x, y는 서로소 a * b = K * K * ..
import math n, k = map(int, input().split()) print(math.factorial(n) // (math.factorial(k) * math.factorial(n-k))) math.factorial 함수 사용