DOTY

프로그래머스) Lv.2 - 카펫 본문

Algorithm/ect

프로그래머스) Lv.2 - 카펫

증식세포 2020. 10. 5. 20:12
728x90
반응형

<문제>

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

 

코딩테스트 연습 - 카펫

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

programmers.co.kr

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

<코드>

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int yellow) {
    int col, row;
    for(int i = 1; i <= yellow; i++) {
        if(yellow % i == 0 && yellow / i + i + 2 == brown / 2){
            row = i;
            col = yellow / i;
        }
    }
    vector<int> answer;
    answer.push_back(row + 2);
    answer.push_back(col + 2);
    return answer;
}

처음에는 문제를 잘 안 읽고 그냥 풀어버림 ㅎ...

테두리가 갈색이고 가운데는 노란색이었다.

이중 for문을 사용하려고 첫 시도해보았다. 

yellow의 가로와 세로를 각각 i와 j로 정하고, 두 수의 곱이 노란색 개수가 되고, 두 수의 합에 2를 더한 수에 2배를 하면 brown개수가 되는 것을 이용하려 했다.

어떻게 하면 for문을 하나만 쓸 수 있을까 고민하다가 굳이 i와 j로 나눌 필요 없이 노란색 개수에다 i를 나눈 나머지가 0인 것이 결국 j가 되므로, 이를 이용했다.

i = 가로

yellow % i == 0을 만족할 경우 j = yellow / i = 세로

여기서 똑같이 i와 j의 합에 2를 더한 수가 brown / 2 가 되면 이를 answer에 넣는다.

728x90
반응형

'Algorithm > ect' 카테고리의 다른 글

프로그래머스) Lv.2 - 탑  (0) 2020.10.05
프로그래머스) Lv.2 - 주식가격  (0) 2020.10.05
백준) 6087 - 레이저 통신  (0) 2020.10.05
백준) 16928 - 뱀과 사다리 게임  (0) 2020.10.05
백준) 15649외 3문제 - N과 M (1~4)  (0) 2020.10.05
Comments