๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์นดํŽซ(Level 2)

by dkswnkk 2022. 4. 14.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์นดํŽซ

Leo๋Š” ์นดํŽซ์„ ์‚ฌ๋Ÿฌ ๊ฐ”๋‹ค๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ค‘์•™์—๋Š” ๋…ธ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ณ  ํ…Œ๋‘๋ฆฌ 1์ค„์€ ๊ฐˆ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋Š” ๊ฒฉ์ž ๋ชจ์–‘ ์นดํŽซ์„ ๋ดค์Šต๋‹ˆ๋‹ค. Leo๋Š” ์ง‘์œผ๋กœ ๋Œ์•„์™€์„œ ์•„๊นŒ ๋ณธ ์นดํŽซ์˜ ๋…ธ๋ž€์ƒ‰๊ณผ

programmers.co.kr

 

์ฝ”๋“œ

#include <string>
#include <vector>

using namespace std;
struct Coordinate{
    int x;
    int y;
};

vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    vector<Coordinate> v;
    int x=1; int y = brown+yellow;
    
    while(x<y){
        y = (brown+yellow)/x;
        if(x*y==brown+yellow)v.push_back({x,y});
        x++;
    }
    
    for(int i=0; i<v.size(); i++){
        int x = v[i].x-2;
        int y = v[i].y-2;
        if(x*y==yellow){
            answer.push_back(y+2);
            answer.push_back(x+2);
        }
    }
    return answer;
}

 

ํ’€์ด(22๋ถ„)

ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์€ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์›๋ฆฌ๋งŒ ์ดํ•ดํ•˜๋ฉด ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฌ์šด๋ฐ ์•„๋ž˜์˜ ์ž…์ถœ๋ ฅ์œผ๋กœ ํ•œ๋ฒˆ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

brown yellow return
24 24 [8,6]

์œ„ ์ž…์ถœ๋ ฅ์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํฌ๊ธฐ์˜ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. (๊ฐ€๋กœ๊ธธ์ด๊ฐ€ ์„ธ๋กœ ๊ธธ์ด๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฝ๋‹ˆ๋‹ค.)

  • 48 x 1 (๊ฐ€๋กœ x ์„ธ๋กœ)
  • 24 x 2 (๊ฐ€๋กœ x ์„ธ๋กœ)
  • 16 x 3 (๊ฐ€๋กœ x ์„ธ๋กœ)
  • 12 x 4 (๊ฐ€๋กœ x ์„ธ๋กœ)
  • 8 x 6 (๊ฐ€๋กœ x ์„ธ๋กœ)

๊ทธ๋ฆฌ๊ณ  brown๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ…Œ๋‘๋ฆฌ์—๋งŒ ์น ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ๋‘๋ฆฌ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋Š” ์ „๋ถ€ yellow๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ yellow์˜ ๊ฒฝ์šฐ {๊ฐ€๋กœ-2(์œ„&์•„๋ž˜) x ์„ธ๋กœ-2(์ขŒ&์šฐ)} = yellow๊ฐœ์ˆ˜ ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์œ„์—์„œ ๊ตฌํ•œ 6๊ฐœ์˜ ๊ฒฝ์šฐ ์ค‘ ์œ„ ์‹์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ์ •๋‹ต์ž…๋‹ˆ๋‹ค.

๋Œ“๊ธ€