프로그래머스 카펫
본문 바로가기
알고리즘 모음집/New 알고리즘

프로그래머스 카펫

by KyeongMin 2020. 7. 23.
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42842

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 ��

programmers.co.kr

 

#include <string>
#include <vector>
#include <iostream>
using namespace std;

vector<int> solution(int brown, int yellow) {
	vector<int> answer;
	int sum = brown + yellow;
	int i = 3;
	int j = 0;
	for ( i = 3; i <= sum; i++) {//3이상의 크기부터 돌리기
		 j = sum / i;
		if (i <= j) {
			if (yellow == (i-2) * (j-2)) { //가로 세로 를 -2 정도해준것의 곱이 yellow와 같아야 가운데 있는거임으로 
				answer.push_back(j);
				answer.push_back(i);
				break;
			}
		}
	}
	return answer;
}
int main(void) {
	vector<int> a;
	//a= solution(10, 2);
//	a= solution(8, 1);
	a= solution(24, 24);
	cout << a[0]<<" "<< a[1] << endl;
	return 0;
}

소스 길이 보고도 응? 이러실것 같은데 여기서는 얼마나 조건을 잘 판단 했는지 인것같아요

완전 탐색 부분의 마지막 문제가 어려울줄 알아서 더 긴장했는데 

그냥 가로 세로를 각 -2 한것의 곱이 yellow 부분이랑 같은경우를 출력하는 문제라고 

생각하시면 이해가 빠릅니다. 물론 이게 출력시 y,x를 반대로 저장하고 출력하는것도 

잘체크 해주셔야해요. 

너무 간단한 풀이라 더이상의 해석은 줄이겠습니다. 소스 가 해석입니다. 

제가 첨에 실수 한게 

i-2 * j-2 라고 그냥 해버려서 첨에 값이 이상하게 나왔었는데 

(i-2)* (j-2) 로해주거나

ci = i-2;

cj= j-2;

mulIJ= ci* cj;

로해서mulIJ 로 해주셔야 좀더 정확하고 틀리는 경우가 줄어들것같아요 주의해주세요

 

728x90
반응형

'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글

프로그래머스 다리를 지나는 트럭  (0) 2020.07.25
15685 드래곤 커브  (0) 2020.07.25
15683 감시  (0) 2020.07.23
프로그래머스 숫자 야구  (0) 2020.07.22
14503 로봇 청소기  (0) 2020.07.22

댓글