๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/programmers

[programmers] ์™„์ „ํƒ์ƒ‰, ์นดํŽซ

by dar0m! 2020. 3. 11.
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์นดํŽซ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

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

programmers.co.kr

๋ฌธ์ œ

Leo๊ฐ€ ๋ณธ ์นดํŽซ์—์„œ ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown, ๋นจ๊ฐ„์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ red๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์นดํŽซ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown์€ 8 ์ด์ƒ 5,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋นจ๊ฐ„์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ red๋Š” 1 ์ด์ƒ 2,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์นดํŽซ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋Š” ์„ธ๋กœ ๊ธธ์ด์™€ ๊ฐ™๊ฑฐ๋‚˜, ์„ธ๋กœ ๊ธธ์ด๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

key point, 1. ์นดํŽซ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋Š” ์„ธ๋กœ ๊ธธ์ด์™€ ๊ฐ™๊ฑฐ๋‚˜, ์„ธ๋กœ ๊ธธ์ด๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.
               2. ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋„ˆ๋น„์™€ ๋†’์ด๋Š” ๋ชจ๋“  ๊ฒฉ์ž ์ˆ˜์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ํƒ์ƒ‰ํ•˜๋ฉด ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๊ฐˆ์ƒ‰ ๊ฒฉ์ž ์ˆ˜์™€ ๋นจ๊ฐ„์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•˜๋ฉด ์ „์ฒด ๊ฒฉ์ž ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. → total
  2. ๋ชจ๋“  ๊ฒฉ์ž ์ˆ˜์— ๋Œ€ํ•ด์„œ ๊ฐ€๋Šฅํ•œ ๋„ˆ๋น„์™€ ๋†’์ด ํฌ๊ธฐ๋ฅผ ๊ตฌํ•ด์„œ ๋ฐฐ์—ด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. → width, height
    ์ด๋•Œ ์นดํŽซ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋Š” ์„ธ๋กœ ๊ธธ์ด์™€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋ฏ€๋กœ, ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ width๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋„ˆ๋น„์™€ ๋†’์ด๋Š” ๋ชจ๋“  ๊ฒฉ์ž ์ˆ˜์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ํƒ์ƒ‰ํ•˜๋ฉด ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋„ˆ๋น„์™€ ๋†’์ด๋ฅผ ๋ชจ๋‘ ๊ตฌํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น ๋„ˆ๋น„์™€ ๋†’์ด์— ๋Œ€ํ•ด์„œ brown๊ณผ red๊ฐ’์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  5. ํ™•์ธํ•˜์—ฌ ๋งž๋‹ค๋ฉด answer๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <vector>
using namespace std;
 
vector<int> solution(int brown, int red) {
    vector<int> answer;
    vector<int> width, height;
    int total = brown + red;
    for (int i = 1; i <= sqrt(total); i++) {
        if (!(total % i)) {
            int tmp = total / i;
            if (i >= tmp) {
                width.push_back(i);
                height.push_back(tmp);
            }
            else {
                width.push_back(tmp);
                height.push_back(i);
            }
        }
    }
    
    for(int i = 0; i < width.size(); i++) {
        int w =width[i], h = height[i];
        if ((w * 2 + (h - 2* 2== brown && (w - 2* (h - 2== red) {
            answer.push_back(w);
            answer.push_back(h);
            break;
        }        
    }
    return answer;
cs

๋Œ“๊ธ€