프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 무조건 한 번 부딪혀야하고 진행 방향은 항상 입사각과 반사각이 동일
- 두 좌표를 부딪히는 부분 기준으로 펼쳐셔 피타고라스 법칙으로 직선 거리를 구해보았다
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
vector<int> solution(int m, int n, int startX, int startY, vector<vector<int>> balls) {
vector<int> answer;
for(int i = 0; i < balls.size(); i++) {
int distance = INT32_MAX;
int targetX = balls[i][0];
int targetY = balls[i][1];
// 상
if(startX != targetX || startY <= targetY)
distance = min(distance, (int)(pow(startX - targetX, 2) + pow(startY + targetY, 2)));
// 하
if(startX != targetX || startY >= targetY)
distance = min(distance, (int)(pow(startX - targetX, 2) + pow(startY - 2 * n + targetY, 2)));
// 좌
if(startX >= targetX || startY != targetY)
distance = min(distance, (int)(pow(startX - 2 * m + targetX, 2) + pow(startY - targetY, 2)));
// 우
if(startX <= targetX || startY != targetY)
distance = min(distance, (int)(pow(startX + targetX, 2) + pow(startY - targetY, 2)));
answer.push_back(distance);
}
return answer;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스/C++] 혼자서 하는 틱택토 (1) | 2024.03.12 |
---|---|
[프로그래머스/C++] 단체사진 찍기 (0) | 2024.03.12 |
[프로그래머스/C++] 두 원 사이의 정수 쌍 (0) | 2024.03.12 |
[프로그래머스/C++] 테이블 해시 함수 (0) | 2024.03.12 |
[프로그래머스/C++] 광물 캐기 (0) | 2024.03.12 |