https://www.acmicpc.net/problem/26517
💡문제 분석 요약
💡알고리즘 설계
ax+b == cx+d 일 경우 Yes와 f(x)를 출력한다.
아닐 경우 No를 출력한다.
함수의 연속성에 대한 설명
함수 f(x)가 특정 점 x=t에서 연속이라는 것은 다음 세 가지 조건을 만족하는 경우를 의미한다.
- f(t)가 정의되어 있어야 한다.
- limx→tf(x)가 존재해야 한다.
- limx→tf(x)=f(t)이어야 한다.
즉, x=t에서 함수값과 극한값이 모두 존재하며, 그 값이 서로 같을 때 f(x)는 x=t에서 연속이라고 한다.
예시 입력에서 k=2, a=6, b=2, c=5, d=4,일 때 그래프이다.
예시 입력에서 k=-7, a=-9 b=-6 c=-7 d=-8일 때, 함수의 비연속성을 보여주는 그래프이다.
gpt시켜서 그래프 그려달라하니까 더 그리려면 유료결제 하라길래 그냥 파이썬 코드 만들어달라고 하고 colab에서 돌려서 만들었다 ㅎㅎ; 앞으로도 그냥 gpt한테는 코드만 짜달라고 하고 그래프는 직접 그리는게 나을 것 같다.
💡코드
x = int(input())
a,b, c, d = map(int, input().split())
if a*x+b==c*x+d:
print('Yes', a*x+b)
else:
print('No')
const readline = require("readline");
(async () => {
let rl = readline.createInterface({ input: process.stdin });
let counter = 1;
for await (const line of rl) {
if (counter == 1) {
x = Number(line);
counter--;
} else {
[a, b, c, d] = line.split(" ").map(Number);
rl.close();
}
}
if (a * x + b == c * x + d) console.log("Yes", a * x + b);
else console.log("No");
})();
💡 느낀점 or 기억할 정보
함수의 연속성에 대해 기억하고 있으면 풀 수 있는 문제이다.
고등학생 시절 미적분을 배웠던 기억이 아직도 남아있다니.. ㄷㄷ
아래는 그래프 만들 때 썼던 파이썬 코드다.
import numpy as np
import matplotlib.pyplot as plt
# Define the piecewise function
def f_left(x, a, b): # For x <= k
return a * x + b
def f_right(x, c, d): # For x > k
return c * x + d
# Define parameters
k = -7
a = -9
b = -6
c = -7
d = -8
# Define the range of x
x_left = np.linspace(-17, k, 250) # x <= k
x_right = np.linspace(k, 3, 250) # x > k
# Compute the function values
y_left = f_left(x_left, a, b)
y_right = f_right(x_right, c, d)
# Plot the function
plt.figure(figsize=(8, 6))
# Plot the left and right parts of the function
plt.plot(x_left, y_left, label="f(x) = ax + b (x <= k)", color="blue")
plt.plot(x_right, y_right, label="f(x) = cx + d (x > k)", color="green")
# Mark the critical point at x = k
plt.scatter(k, f_left(k, a, b), color="red", label="ax + b at x = k", zorder=5) # Filled red dot
plt.scatter(k, f_right(k, c, d), facecolors='none', edgecolors='red', label="cx + d at x = k", zorder=5) # Unfilled red dot
# Add labels and legend
plt.axvline(k, color="gray", linestyle="--", linewidth=0.8, label="x = k")
plt.title("Graph of f(x) with discontinuity at x = k")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.legend()
plt.grid(True)
plt.show()
gpt는 그래프 그릴 때 파이썬으로 그리고 클로드는 html로 그려서 퀄리티는 확실히 gpt가 나은 것 같다.
클로드는 웹개발 용으로만 쓰는걸로…
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준 20186] 수 고르기 - python, js (0) | 2025.01.04 |
---|---|
[백준 13706번] 제곱근 - python, js (1) | 2025.01.03 |
[백준 16395] 파스칼의 삼각형 - python, js (1) | 2025.01.01 |
[백준 24313] 알고리즘 수업 - 점근적 표기 1 - python, js (0) | 2024.12.31 |
백준 랜덤디펜스 💻😀 (0) | 2024.12.31 |