728x90
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42842
풀이
30분간 끄적이다 아이디어 떠올려서 10분만에 코딩해서 40분만에 해결,,
저의 노가다 현장을 함께 보시죠 ...
풀이 방법으로는
1) yellow가 몇 행 몇 열인지 모르기 때문에 (x,y)로 두고 x=1부터 yellow/2까지 순회하면서 y값을 찾아야한다. yellow/2까지는 하는 이유는 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 이 조건 때문이다.
2) 이후 x값(가로), y값(세로) 이므로 (x값 + 2,*2 + y*2) 가 brown과 같은지 확인한다. 저렇게 계산하는 이유로는 그림으로 설명하겠습니다.
(허허 ,, 똥손 죄송)
3) 2)가 통과되면, (x,y)에서 가로를 x+2로, 세로를 y+2로 반환하면 그것이 정답 ! ( + 2를 해주는 이유는 양쪽에 모서리가 늘기 때문)
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
for(int i=1;i<=yellow/2+1;i++){ // yellow 기준 (x,y) 계산
if(yellow%i==0){ // 나누기해서 떨어질때
if((yellow/i +2)*2 + i*2 == brown){
// brown 개수 파악 -> (x,y) 기준으로 가로(x+2 *2) + 세로(y*2)
// brown과 같으면 종료
answer.push_back(yellow/i +2);
answer.push_back(i+2);
break;
}
}
}
return answer;
}
728x90
728x90
'Algorihtm > 프로그래머스' 카테고리의 다른 글
C++ 프로그래머스 네트워크 (1) | 2023.11.14 |
---|---|
C++ 프로그래머스 타겟 넘버 (0) | 2023.11.13 |
C++ 프로그래머스 구명보트 (0) | 2023.11.01 |
C++ 프로그래머스 정수삼각형 (0) | 2023.10.30 |
C++ 프로그래머스 JadenCase 문자열 만들기 (0) | 2023.10.30 |