[백준 / BOJ] 1358번 하키 (C++, Python)◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이2022. 6. 5. 12:00
Table of Contents
반응형
링크 : https://www.acmicpc.net/problem/1358
문제
문제 풀이
뭔가 복잡해보이지만, 조건을 나눠서 풀면 쉽게 풀리는 문제다.
- 사각형에 있을 경우
- 왼쪽 반원에 있을 경우
- 오른쪽 반원에 있을 경우
위 조건들로 만들어주었다.
C++ 상세 풀이
더보기
int calc_dist(int x, int y, int a, int b) {
return ((x - a) * (x - a)) + ((b - y) * (b - y));
}
for (int t = 0; t < P; ++t) {
int x, y, r = (H / 2) * (H / 2);
std::cin >> x >> y;
// 사각형 안에 있는지 판별
if (X <= x && x <= X + W && Y <= y && y <= Y + H)
cnt++;
// 왼쪽 반원에 있는지 판별
else if (calc_dist(X, Y + (H / 2), x, y) <= r)
cnt++;
// 오른쪽 반원에 있는지 판별
else if (calc_dist(X + W, Y + (H / 2), x, y) <= r)
cnt++;
}
핵심 코드는 위와 같다.
Python 상세 풀이
더보기
def calc_dist(x, y, a, b):
return ((x - a) * (x - a)) + ((b - y) * (b - y))
# 사각형 안에 있는지 판별
if (X <= x and x <= X + W and Y <= y and y <= Y + H):
cnt += 1
# 왼쪽 반원에 있는지 판별
elif (calc_dist(X, Y + (H / 2), x, y) <= r):
cnt += 1
# 오른쪽 반원에 있는지 판별
elif (calc_dist(X + W, Y + (H / 2), x, y) <= r):
cnt += 1
핵심 코드는 위와 같다.
코드 전문
C++
Python
소감
반응형
'◎ 자료구조와 알고리즘 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 / BOJ] 1037번 약수 (C++, Python) (0) | 2022.06.06 |
---|---|
[백준 / BOJ] 5086번 배수와 약수 (C++, Python) (0) | 2022.06.06 |
[백준 / BOJ] 1004번 어린 왕자 (C++, Python) (0) | 2022.06.05 |
[백준 / BOJ] 1002번 터렛 (C++, Python) (0) | 2022.06.04 |
[백준 / BOJ] 2477번 참외밭 (C++, Python) (0) | 2022.06.03 |
@Reo :: 코드 아카이브
자기계발 블로그