목록PS/Python (269)
지나가던 개발자
n, m = list(map(int, input().split())) never_heard = [] never_seen = [] for i in range(n): never_heard.append(input()) for i in range(m): never_seen.append(input()) print(len(set(never_heard) & set(never_seen))) for i in sorted(list(set(never_heard) & set(never_seen))): print(i) set 자료형은 집합 자료형으로, &으로 교집합, |으로 합집합, -으로 차집합, ^으로 대칭 차집합을 구할 수 있다.
def is_palindrome(a): return a == a[::-1] def is_prime(n): if n == 1: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True n = int(input()) while True: if is_prime(n): if is_palindrome(str(n)): print(n) break n += 1 저번에 풀었던 1990번(소수인팰린드롬) 문제랑 상당히 유사한 것 같다. 아니, 사실 거의 똑같다. 그런데 이 문제가 훨씬 쉽다. 근데 솔브닥 티어 차이가 1밖에 안나는 걸로 봐서(1990번은 골드V, 이건 실버I) 티어 책정이 조금 잘못된 것 같다. 1990번은 ..
import math def is_prime(n): if n == 1: return False for i in range(2, int(math.sqrt(n))+1): if n % i == 0: return False return True n = int(input()) first = int("1" + "0"*(n-1)) + 1 last = int("9"*n) if n == 1: print("2\n3\n5\n7") elif n < 6: for i in range(first, last+1, 2): if is_prime(i): for j in range(1, len(str(i))): if is_prime(int(str(i)[:j*(-1)])): p = "Print it" continue else: p = "Do..
진짜 시간초과때문에 삽질을 엄청나게 많이 했던 문제였다... 19시간이나 삽질을 하긴 했지만, 뭐, 결국 풀기는 했다. import math def is_palindrome(a): return a == "".join(list(reversed(a))) def is_prime(n): if n == 1: return False for i in range(2, int(math.sqrt(n))+1): if n % i == 0: return False return True a, b = list(map(int, input().split())) for i in range(a, b+1): if is_palindrome(str(i)): if is_prime(i): print(i) print(-1) 처음에는 코드를 이렇게 ..
생각보다 많이 어려웠던 문제였다. from itertools import product a, b = input().split() a, b = list(map(int, a)), list(map(int, b)) products = list(product(a, b)) for i in range(len(products)): products[i] = products[i][0] * products[i][1] print(sum(products)) 일단 이렇게 한번 짜봤다. itertools의 product를 import하면 두 리스트에서 가능한 모든 조합을 반환해 주기에, 모든 조합을 구해서 곱한 뒤 그 합을 구했다. 결과는 메모리 초과. 이런. 9,999자리까지 입력이 가능한데 a와 b 둘 다 9,999자리로 오던..
def gcd(a, b): while b > 0: a, b = min(a, b), max(a, b) a, b = a, int(b%a) return a a, b = list(map(int, input().split())) print(gcd(int("1"*a), int("1"*b))) 일단 이렇게 유클리드 알고리즘에 때려박아봤다. 메모리 초과가 떴다. 2^63까지 입력이 들어오기 때문에 당연한 결과다. "1"이 2^63번 반복된 문자열이 메모리 초과가 뜨지 않는 것이 이상하다. 아, 저 gcd 함수는 내가 만든 깃허브 repository 중 하나인 useful_defs의 Python 폴더의 gcd_EuclideanAlgorithm().py 파일에서 가져왔다(링크: https://github.com/kwony..
print(int((-1+(1-4*(1-int(input())))**(1/2))//2)) 1줄이긴 하지만 상당히 복잡해보이는 코드인데, 사실 그 내용은 굉장히 간단하다. 바로 대한민국 국민이라면 누구나 알 이차방정식의 근의 공식을 이용한 것이다...! 2a분의 -b 플러스마이너스 루트 b의 제곱 마이너스 4ac...! 우리는 k값을 구해야 하므로 k를 미지수로 한 이차방정식을 세우면, 총 불꽃의 수를 n이라고 했을 때에 처음 쏜 큰 불꽃 1개, 갈라진 중형 불꽃 k개, 중형 불꽃 k개에서 k개씩 갈라졌으므로 k²개가 된 소형 불꽃이 있으므로 1 + k + k² = n, 이항하면, k² + k + (1-n) = 0. 이렇게 된 식에서 근의 공식을 쓴 것이 위 코드이다. 2022년 5월 16일 19시 5분 ..