๐Ÿ“ Coding Test Study/Algorithm Problem

[C++][Programmers][์™„์ „ํƒ์ƒ‰] ์นดํŽซ

ibelieveinme 2023. 4. 24. 01:26
728x90

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

[ํ•ด๊ฒฐ์ฑ…]

์ข…์ด์— ๊ทธ๋ ค๊ฐ€๋ฉฐ ๊ทœ์น™์„ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๊ณ„์† ์›์ ์œผ๋กœ ๋น™๋น™ ๋Œ์•„์„œ ํžŒํŠธ๋ฅผ ๋ดค๋‹ค.

3x3์ด ๊ฐ€์žฅ ์ž‘์€ ์นดํŽซ ํฌ๊ธฐ(๊ฐ€๋กœ>=์„ธ๋กœ ์ด๋ฏ€๋กœ)๋ผ๋Š”๊ฑด ๊ตฌํ–ˆ๋Š”๋ฐ ์นดํŽซ์ด ๋ชจ์–‘์ด ์ง์‚ฌ๊ฐํ˜•์ผ ๋•Œ, ์ •์‚ฌ๊ฐํ˜•์ผ ๋•Œ๋กœ ๋‚˜๋ˆ ๊ฐ€๋ฉฐ ์ ‘๊ทผํ•ด์„œ ๋น™๋น™ ๋Œ์•˜๋˜๊ฑฐ ๊ฐ™๋‹ค.

 

1) ๊ฐ€์žฅ ์ž‘์€ ์„ธ๋กœ์˜ ๊ธธ์ด๋Š” 3 ์ด๋‹ค.

2) ๋…ธ๋ž€์ƒ‰๊ณผ ๊ฐˆ์ƒ‰ ํฌ๊ธฐ๋ฅผ ๋ชจ๋‘ ํ•ฉํ•œ ๊ฐ’์ด ๋„“์ด์ด๋ฏ€๋กœ ๊ฐ€๋กœx์„ธ๋กœ ๊ฐ’๊ณผ ๊ฐ™๋‹ค.

3) ์„ธ๋กœ๊ธธ์ด๋ฅผ 3๋ถ€ํ„ฐ 1์”ฉ ๋”ํ•˜๋ฉฐ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ๊ฐ€๋กœ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. '๋…ธ๋ž€์ƒ‰+๊ฐˆ์ƒ‰ / ์„ธ๋กœ = ๊ฐ€๋กœ' ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€๋กœ 

4) ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€๋กœ๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด, ๊ฐˆ์ƒ‰ ํ…Œ๋‘๋ฆฌ๋ฅผ ์ œ์™ธํ•œ '(๊ฐ€๋กœ -2) * (์„ธ๋กœ-2) = ๋…ธ๋ž€์ƒ‰' ์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๋ณธ๋‹ค.

5) ์ด๊ฒƒ๊นŒ์ง€ ๋งŒ์กฑํ•˜๋ฉด ๊ฐ€๋กœ ์„ธ๋กœ๋ฅผ ์ž˜ ๊ตฌํ•œ ๊ฒƒ.

 

[์•Œ์•„๋‘˜ ๊ฒƒ]

์ •ํ•ด์ง„ ๋ชจ์–‘์ด๋ฉด ๋„“์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•๋„ ๊ธฐ์–ตํ•ด๋‘๊ธฐ.

 

[์ฝ”๋“œ]

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    int sum = brown + yellow; //๊ฐˆ์ƒ‰ ๋…ธ๋ž€์ƒ‰ ๊ฐœ์ˆ˜ ๋”ํ•ด์„œ ๋„“์ด ๊ตฌํ•˜๊ธฐ
    
    //์ตœ์†Œ ๋†’์ด๋Š” 3๋ถ€ํ„ฐ ์‹œ์ž‘
    for(int height = 3; ; height++){
        int width = sum / height;
        //๋ฌด์กฐ๊ฑด ๊ฐˆ์ƒ‰์ธ ๋†’์ด 2์ค„, ๊ฐ€๋กœ 2์ค„์„ ์ œ์™ธํ•œ ๊ฐ’์„ ๊ณฑํ–ˆ์„ ๋•Œ ๋…ธ๋ž€์ƒ‰ ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด ๊ทธ๊ฒŒ ์ •๋‹ต.
        if(((height -2)*(width -2))==yellow){
            answer.push_back(width);
            answer.push_back(height);
            break;
        }
    }
    return answer;
}
728x90