백준/기하학
-
백준 16931 nodejs백준/기하학 2023. 2. 22. 13:59
문제 https://www.acmicpc.net/problem/16931 16931번: 겉넓이 구하기 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어 www.acmicpc.net 풀이 6개의 면에서 봤을 때의 겉넓이를 각각 구해서 더해준다. 위/아래에서 본 면들의 겉넓이는 2 * N * M이다. 나머지 면들에서의 겉넓이는 시작 면 + (면의 크기가 증가할 때 큰 면 - 작은 면의 총합)과 같다. let [[N, M], ...I] = `${require('fs').readFileSync(0)}`.split`\n`.map(e => e.split` `.map(..
-
백준 17387 nodejs백준/기하학 2023. 1. 30. 16:27
문제 https://www.acmicpc.net/problem/17387 17387번: 선분 교차 2 첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다. www.acmicpc.net 풀이 ccw 알고리즘을 이용하여 경우의 수를 나눈다. x, y 둘 중 하나가 0이 아닐 때, 나머지 하나가 음수라면 한 점에서 교차한다. x, y가 둘 다 0이라면 일직선상에 있거나 하나의 점을 공유한다. 일직선상에 있을 경우 범위가 겹치는지 확인한다. let [[x1, y1, x2, y2], [x3, y3, x4, y4]] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'..