본문 바로가기

PS/수학7

[백준] 13909번: 창문 닫기 파이썬 https://www.acmicpc.net/problem/13909문제 설명창문이 n개 있고, 1번부터 n번까지 번호가 붙어 있습니다. 처음에는 모든 창문이 닫혀있습니다. 어떤 사람이 다음과 같은 규칙으로 창문을 열고 닫습니다. 1. 첫 번째 사람은 모든 창문을 연다. 2. 두 번째 사람은 2의 배수 번호에 해당하는 창문을 연다(이미 열려있으면 닫는다). 3. 세 번째 사람은 3의 배수 번호에 해당하는 창문을 연다(이미 열려있으면 닫는다). 4. 계속해서 n번째 사람은 n의 배수에 해당하는 창문을 열거나 닫는다. 이 과정을 거친 후에, 열려있는 창문의 개수를 구하는 문제입니다. 처음 생각했던 코드 처음에는 모든 창문을 하나씩 살펴보고, n번 사람까지 창문을 열고 닫는 과정을 구현했다. 이를 위해 각 사람.. 2024. 9. 19.
[백준] 17103번: 골드바흐 파티션 파이썬 https://www.acmicpc.net/problem/17103골드바흐 파티션 문제는 짝수 \( n \)을 두 소수의 합으로 표현하는 방법의 개수를 찾는 문제이다. 골드바흐의 추측에 따르면, 2보다 큰 모든 짝수는 두 소수의 합으로 표현될 수 있다. 이 문제에서는 주어진 짝수 n 에 대해, 두 소수의 합으로 n을 나타내는 모든 경우의 수를 찾아 출력하는 게 목표이다. 처음에는 단순하게 for문으로 순서대로 돌면서 n-i와 i가 둘 다 소수인지 판별하도록 코드를 짰다.그런데 시간초과에 걸렸다.그래서 미리 1000000까지의 소수를 배열에 저장해놓고 배열을 체크하는 식으로 구현했다. 코드 풀이import sysimport mathdef is_primenum(x): if x == 1: r.. 2024. 9. 9.
[백준] 4134번: 다음 소수 파이썬 https://www.acmicpc.net/problem/4134 주어진 수보다 크거나 같은 첫 번째 소수를 찾는 문제. 입력된 수가 소수가 아니면 그보다 큰 수 중에서 가장 작은 소수를 찾아 출력하면된다.  import sysimport mathdef is_primenum(x): for i in range(2, int(math.sqrt(x)) + 1): if x % i == 0: return False return Truen = int(sys.stdin.readline())for _ in range(n): num = int(sys.stdin.readline()) while True: if num == 0 or num == 1: .. 2024. 9. 6.
[백준]2485번: 가로수 파이썬 https://www.acmicpc.net/problem/2485 간격이 다른 여러 가로수 사이에 추가로 가로수를 심어 일정한 간격으로 맞추는 문제. 이때 최소한으로 가로수를 추가해야 한다. 문제를 풀기 위해선 최대공약수(GCD) 사용한다. 각 가로수 사이의 간격들을 모두 동일하게 맞춰야 하니까 모든 간격들의 최대공약수를 구하고 그 간격을 기준으로 추가 가로수를 심으면 된다. 풀이import sysdef gcd(x, y): while y > 0: x, y = y, x%y return xn = int(sys.stdin.readline())tree = []loc = int(sys.stdin.readline())first =locfor _ in range(n-1): loc2 = int(sys.std.. 2024. 9. 5.