본문 바로가기

PS38

[백준]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.
1735번: 분수 합 파이썬 https://www.acmicpc.net/problem/1735  두 분수의 분자와 분모가 주어졌을 때, 이 두 분수의 합을 구하고, 그 결과를 기약분수 형태로 출력하는 문제이다.일단 분수의 합을 먼저 구한뒤 최대공약수로 나눠서 기약분수로 만들면 된다. 풀이import sysdef gcd(x, y): # 유클리드 호제법을 사용해 최대공약수(GCD) 구하기 while y > 0: x, y = y, x % y return x# 입력 받기num1, denom1 = map(int, sys.stdin.readline().split())num2, denom2 = map(int, sys.stdin.readline().split())# 두 분수의 합 구하기numerator_sum = nu.. 2024. 9. 4.
[백준] 13241번: 최소공배수 파이썬 https://www.acmicpc.net/problem/13241 유클리드 호제법을 사용하여 푸는 문제다.효율적으로 최소공약수를 구하는 방법은 유클리드 호제법을 사용하는 것이고, 이를 이용해 최소공배수도 간단히 계산할 수 있습니다. 유클리드 호제법 - 두 수 `x`와 `y`가 있을 때, `x`를 `y`로 나눈 나머지를 계속 구하면서 `y`가 0이 될 때까지 반복헌다. - 최종적으로 남은 `x`가 최대공약수가 된다. 최소 공배수 구하는 방법- 두 수의 곱을 최대 공약수로 나누면 최소 공배수가 나온다. 풀이import sysdef gcd(x, y): while y > 0: x, y = y, x%y return xdef lcm(x,y): return x * y // gcd(x,y)a, b = ma.. 2024. 9. 3.
[백준] 2346번: 풍선 터뜨리기 파이썬 https://www.acmicpc.net/problem/2346큐를 이용한 문제다.처음에 문제를 잘못이해해서 삽질을 좀 했다.그리고 큐 회전하는거 숫자가 너무 헷갈렸다.문제 설명처음에는 1번부터 n번까지 번호가 매겨진 풍선들이 일렬로 배치되어있다.첫 번째 풍선을 터뜨리고, 그 안에 적힌 숫자만큼 왼쪽이나 오른쪽으로 이동하여 다음 풍선을 터뜨린다. 양수는 오른쪽, 음수는 왼쪽으로 이동하는 것을 의미한다.모든 풍선을 터뜨릴 때까지 이 과정을 반복한다.터뜨린 풍선의 순서를 출력한다.문제 풀이 풍선들의 번호를 큐에 넣고, 주어진 숫자만큼 큐를 회전시키는 방식으로 문제를 해결했다.입력 처리:첫 번째 입력으로 풍선의 개수 n두 번째 입력으로 각 풍선에 적힌 숫자큐 초기화:큐에 1번부터 n번까지의 번호를 차례대로 .. 2024. 8. 26.