목록코테준비 (91)
JiSoo's Devlog
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 * ..
n = int(input()) m = list(map(int, input().split())) r = [] for i in range(n): if m[i] == 1: continue else: k = m[i] c = 0 for j in range(2, k): if k % j == 0: c += 1 if c == 0: r.append(k) print(len(r)) 소수는 자신을 제외하고 2 이상의 자연수로 나누어 떨어지지 않는다 그렇기 때문에 2 이상의 자연수로 나누어 떨어지면 c+=1 되도록 작성 반복을 마친 후 c가 0이라면 1과 자기 자신을 제외하고 나누어 떨어지는 수가 없다는 의미이기 때문에 소수
import math n, k = map(int, input().split()) print(math.factorial(n) // (math.factorial(k) * math.factorial(n-k))) math.factorial 함수 사용
while(1): n = list(map(int, input().split())) if sum(n)==0: break m = max(n) n.remove(m) if m**2 == n[0]**2 + n[1]**2: print("right") else: print("wrong") while문이 반복되는 동안 세 수 받기 리스트에서 가장 큰 수를 찾고 나머지 두 수의 제곱의 합을 구해야 하기 때문에 remove로 제거