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

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ(Level 1)

by ์•ˆ์ฃผํ˜• 2022. 4. 10.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ

[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"

programmers.co.kr

 

์ฝ”๋“œ

#include <string>
#include <vector>

using namespace std;

string solution(vector<int> numbers, string hand) {
    string answer = "";
    int x_L = 3, y_L = 0;
    int x_R = 3, y_R = 2;
    
    for(int number:numbers){
        if(number==1||number==4||number==7){
            answer+='L';
            if(number==1) x_L = 0, y_L = 0;
            else if(number==4) x_L = 1, y_L=0;
            else if(number==7) x_L = 2, y_L = 0;
        }
        else if(number==3||number==6||number==9){
            answer+='R';
            if(number==3) x_R = 0, y_R = 2;
            else if(number==6) x_R = 1, y_R = 2;
            else if(number==9) x_R = 2, y_R = 2;
        }
        else{   //2, 5, 8, 0 ์ผ๋•Œ
            if(number==2){
                int dist_L = abs(x_L-0) + abs(y_L-1);
                int dist_R = abs(x_R-0) + abs(y_R-1);
                if(dist_L<dist_R){  //์™ผ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋•Œ
                    x_L = 0, y_L = 1;
                    answer+='L';
                }
                else if(dist_L>dist_R){ //์˜ค๋ฅธ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋–„
                    x_R = 0, y_R = 1;
                    answer+='R';
                }
                else{   //๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์„ ๋•Œ
                    if(hand=="right"){  //์˜ค๋ฅธ์† ์žก์ด์ผ๋–„
                        x_R = 0, y_R = 1;
                        answer+='R';
                    }
                    else{   //์™ผ์† ์žก์ด์ผ ๋•Œ
                        x_L = 0, y_L = 1;
                        answer+='L';
                    }
                }
            }
            else if(number==5){
                int dist_L = abs(x_L-1) + abs(y_L-1);
                int dist_R = abs(x_R-1) + abs(y_R-1);
                if(dist_L<dist_R){  //์™ผ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋•Œ
                    x_L = 1, y_L = 1;
                    answer+='L';
                }
                else if(dist_L>dist_R){ //์˜ค๋ฅธ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋–„
                    x_R = 1, y_R = 1;
                    answer+='R';
                }
                else{   //๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์„ ๋•Œ
                    if(hand=="right"){  //์˜ค๋ฅธ์† ์žก์ด์ผ๋–„
                        x_R = 1, y_R = 1;
                        answer+='R';
                    }
                    else{   //์™ผ์† ์žก์ด์ผ ๋•Œ
                        x_L = 1, y_L = 1;
                        answer+='L';
                    }
                }
            }
            else if(number==8){
                int dist_L = abs(x_L-2) + abs(y_L-1);
                int dist_R = abs(x_R-2) + abs(y_R-1);
                if(dist_L<dist_R){  //์™ผ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋•Œ
                    x_L = 2, y_L = 1;
                    answer+='L';
                }
                else if(dist_L>dist_R){ //์˜ค๋ฅธ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋–„
                    x_R = 2, y_R = 1;
                    answer+='R';
                }
                else{   //๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์„ ๋•Œ
                    if(hand=="right"){  //์˜ค๋ฅธ์† ์žก์ด์ผ๋–„
                        x_R = 2, y_R = 1;
                        answer+='R';
                    }
                    else{   //์™ผ์† ์žก์ด์ผ ๋•Œ
                        x_L = 2, y_L = 1;
                        answer+='L';
                    }
                }
            }
            else if(number==0){
                int dist_L = abs(x_L-3) + abs(y_L-1);
                int dist_R = abs(x_R-3) + abs(y_R-1);
                if(dist_L<dist_R){  //์™ผ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋•Œ
                    x_L = 3, y_L = 1;
                    answer+='L';
                }
                else if(dist_L>dist_R){ //์˜ค๋ฅธ์ชฝ ์—„์ง€์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์„ ๋–„
                    x_R = 3, y_R = 1;
                    answer+='R';
                }
                else{   //๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์„ ๋•Œ
                    if(hand=="right"){  //์˜ค๋ฅธ์† ์žก์ด์ผ๋–„
                        x_R = 3, y_R = 1;
                        answer+='R';
                    }
                    else{   //์™ผ์† ์žก์ด์ผ ๋•Œ
                        x_L = 3, y_L = 1;
                        answer+='L';
                    }
                }
            }
        }
    }
    return answer;
}

 

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

์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ํด๋ฆฐ ํ•˜๊ฒŒ ์งœ๋ ค๊ณ  ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋จธ๋ฆฟ์†์—์„œ ์ƒ๊ฐ๋‚˜๋Š” ๋ฐ๋กœ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‹œ๊ฐ„์„ ์•„๊ปด์„œ ํ‘ธ๋Š” ๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํœด๋Œ€ํฐ ํ‚คํŒจ๋“œ๋ฅผ [4][4] ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ขŒ์ธก๊ณผ ์šฐ์ธก์˜ ์—„์ง€ ์†๊ฐ€๋ฝ ์œ„์น˜๋ฅผ ๊ฐฑ์‹ ํ•ด ์ฃผ๋ฉด์„œ ๊ฐ€์šด๋ฐ ์ˆซ์ž๋“ค 2, 5, 8, 0์ผ ๋•Œ ์ขŒ์ธก๊ณผ ์šฐ์ธก ์—„์ง€์†๊ฐ€๋ฝ ์ค‘ ์–ด๋Š ๊ณณ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์งง์€์ง€ ์ฐพ์•„์„œ ๊ตฌํ˜„ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€