๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lemonlover๐Ÿง˜๐Ÿป‍โ™€๏ธ

2020 ์นด์นด์˜ค ์‹ ์ž…์‚ฌ์› ์ฝ”๋”ฉํ…Œ์ŠคํŠธ - ์ž๋ฌผ์‡ ์™€ ์—ด์‡  ๋ณธ๋ฌธ

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์ถ”์ฒœ ๋ฌธ์ œ

2020 ์นด์นด์˜ค ์‹ ์ž…์‚ฌ์› ์ฝ”๋”ฉํ…Œ์ŠคํŠธ - ์ž๋ฌผ์‡ ์™€ ์—ด์‡ 

Summer_lulu 2019. 12. 18. 00:06
728x90
๋ฐ˜์‘ํ˜•

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

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ž๋ฌผ์‡ ์™€ ์—ด์‡  | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true

programmers.co.kr

 

์˜ค๋Š˜์€ 2020 ์นด์นด์˜ค ์‹ ์ž…์‚ฌ์› ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ 3๋ฒˆ์งธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ฌด๋ ค ์ •๋‹ต๋ฅ  7%๋ฅผ ์ž๋ž‘ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

์„ค๊ณ„๋ฅผ ์ƒ๊ฐํ•ด๋‚ด๊ธฐ ์กฐ๊ธˆ ํž˜๋“ค์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋จธ๋ฆฟ์†์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ๋Œ๋ ค๋ณด๋ฉด 

๊ฝค๋‚˜ ๊ฐ„๋‹จํ•œ๊ฒŒ ๋ณด์ด๋Š”๋ฐ ์‹ค์ œ ๊ตฌํ˜„์— ๋“ค์–ด๊ฐ€๋ฉด ๋‚œํ•ดํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๋ฌธ์ œ์—์„œ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1. ์ง€๋„๋ฅผ 90๋„ ๋Œ๋ ค์„œ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ์„ ์ธ์ง€ํ•˜์ž.

2. ์ง€๋„๋ฅผ 90๋„ ๋Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์‹คํžˆ ์•Œ์ž. (์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ ๋Œ€์นญ, ์„ ๋Œ€์นญ ๋„ ์—ฐ์Šตํ•ด๋ณด์ž)

3. 2์ฐจ์› ๋ฐฐ์—ด์„ ๋ถ€๋ถ„์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด์ž.

 

 

 

1. ์ง€๋„๋ฅผ 90๋„ ๋Œ๋ ค์„œ ๊ธฐ์กด ์ฝ”๋“œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

 

(์ถ”์ฒœ ๋ฌธ์ œ)

์‚ฌํƒ•๊ฒŒ์ž„ : https://www.acmicpc.net/problem/3085

๊ฒฝ์‚ฌ๋กœ : https://www.acmicpc.net/problem/14890

 

'๊ฒฝ์‚ฌ๋กœ' ๋ฌธ์ œ๋Š” ์‚ผ์„ฑ ๊ธฐ์ถœ ๋ฌธ์ œ๋กœ ์œ ๋ช…ํ•˜์ฃ . ์ด์™ธ์—๋„ ์ œ๊ฐ€ ๊ฒฝํ—˜ํ–ˆ๋˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ๋„ ๋งต์„ 90๋„ ๋Œ๋ ค์„œ

๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งŽ์ด ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค.

 

๋ณดํ†ต ์ˆ˜์ง๊ณผ ์ˆ˜ํ‰์— ๋Œ€ํ•œ ๋กœ์ง์ด ๋˜‘๊ฐ™์„ ๊ฒฝ์šฐ, ์ด ๋ฐฉ๋ฒ•์ด ๋งค์šฐ ์ข‹์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋””๋ฒ„๊น…์ด ์‰ฌ์›Œ์ง€๊ณ , ์ฝ”๋”ฉ๋Ÿ‰์ด ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

2. n x n 2์ฐจ์› ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์กฐ์ž‘ (90๋„ ํšŒ์ „ / ์ ๋Œ€์นญ / ์„ ๋Œ€์นญ)

 

(์ถ”์ฒœ ๋ฌธ์ œ)

๋งˆ์ˆ ์‚ฌ ์ด๋ฏผํ˜ : https://www.acmicpc.net/problem/3023

 

์œ„ ๋ฌธ์ œ์—์„œ ์„ ๋Œ€์นญ, ์ ๋Œ€์นญ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚œ์ด๋„๋Š” ์‰ฝ์ง€๋งŒ, ์ข‹์€ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

 

(i, j) : i ํ–‰, j ์—ด ์ด๋ผ๊ณ  ๊ฐ€์ •.

 

(1) 90๋„ ์กฐ์ž‘ 

(i, j) => (j, n - i - 1)

 

(2) x์ถ• ๋Œ€์นญ

(i, j) => (n - i - 1, j)

 

(3) y์ถ• ๋Œ€์นญ

(i, j) => (i, n - j - 1)

 

(4) ์ ๋Œ€์นญ

(i, j)  => (n - i - 1, n - j - 1)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void turn(){
    int tmp_arr[20][20];             // ์ž„์‹œ๋กœ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์ด๊ณณ์— ์›๋ณธ์„ ์กฐ์ž‘ํ•œ ๋ฐฐ์—ด์„ ๊ธฐ๋กํ•ด 
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++){
            tmp_arr[n - i - 1][j] = arr[i][j];          // x์ถ• ๋Œ€์นญ
            tmp_arr[i][n - j - 1= arr[i][j];          // y์ถ• ๋Œ€์นญ
            tmp_arr[n - i - 1][n - j - 1= arr[i][j];  // ์ ๋Œ€์นญ
            tmp_arr[j][n - i - 1= arr[i][j];          // 90๋„ ํšŒ์ „
        }
    
    // ์›๋ณธ ๋ฐฐ์—ด์— ๋‹ค์‹œ ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •
       for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            arr[i][j] = tmp_arr[i][j];
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

 

 

3. 2์ฐจ์› ๋ฐฐ์—ด์„ ๋ถ€๋ถ„์ ์œผ๋กœ ์ ‘๊ทผ

์ด๋ฒˆ์—๋Š” 2์ฐจ์› ๋ฐฐ์—ด์„ ๋ถ€๋ถ„์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์œ„์™€ ๊ฐ™์ด ์Šค๋„์ฟ ๊ฐ€ ์žˆ์„ ๋•Œ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘๊บผ์šด ์„ ์œผ๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ๋Š”

3x3 ์˜์—ญ์„ ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‹œ์ž‘์ ์„ ์žก์•„์ฃผ๋Š” for๋ฌธ๊ณผ 3x3์„ ์ ‘๊ทผํ•˜๋Š” ์ด์ค‘ for๋ฌธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๋กœ ๋ณด์‹œ์ฃ .

 

1
2
3
4
5
6
7
8
9
10
11
for(int i = 0; i < n / 3; i++){
    for(int j = 0; j < n / 3; j++){
        int sy = i * 3, sx = j * 3;            // 3x3 ์ •์‚ฌ๊ฐํ˜• ์™ผ์ชฝ ๋งจ ์œ„ ์ง€์  ์œ„์น˜๋ฅผ ๋จผ์ € ์žก์•„์ค€๋‹ค
        for(int k = sy; k < sy + 3; k++){    // ์‹œ์ž‘ ์œ„์น˜์—์„œ ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜์ชฝ์œผ๋กœ ์ตœ๋Œ€ +3๋งŒํผ ์ œํ•œ์„ ๋‘”๋‹ค
            for(int l = sx; l < sx + 3; l++){
                cout << mp[k][l];
            }
            cout << endl;
        }
    }
}   
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

์œ„ ์ฝ”๋“œ์—์„œ n = 9 ์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

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
33
34
35
36
37
38
39
40
41
42
#include <string>
#include <vector>
#include <iostream>
 
using namespace std;
int n, m;
 
void turn_90(vector<vector<int>> &arr){
    int ret[21][21= {};
    for(int i = 0; i < m; i++)
        for(int j = 0; j < m; j++)
            ret[j][m - i - 1= arr[i][j];
    for(int i = 0; i < m; i++)
        for(int j = 0; j < m; j++)
            arr[i][j] = ret[i][j];
}
 
bool solution(vector<vector<int>> k, vector<vector<int>> l) {
    m = k.size(), n = l.size();
    bool result = true;
    for(int dir = 0; dir < 4; dir++){
        for(int off_y = n - 1; off_y >= -+ 1; off_y--){
            for(int off_x = n - 1; off_x >= -+ 1; off_x--){
                result = true;
                for(int i = 0; i < n; i++){
                    for(int j = 0; j < n; j++){
                        int ny = i + off_y, nx = j + off_x;
                        if(ny < 0 || ny >= m || nx < 0 || nx >= m) {
                            if(l[i][j] == 0) result = false;
                        }
                        else {
                            if((l[i][j] == 0 && k[ny][nx] == 0|| (l[i][j] == 1 && k[ny][nx] == 1)) result = false;
                        }
                    }
                }
                if(result) return true;
            }
        }
        turn_90(k);
    }
    return false;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

728x90
๋ฐ˜์‘ํ˜•