πŸ’­ Problem Solving

[SWEA][C++] 2805. λ†μž‘λ¬Ό μˆ˜ν™•ν•˜κΈ°

0=2. 2024. 5. 5. 08:16

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB

 

SW Expert Academy

SW ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰ 강화에 도움이 λ˜λŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ 컨텐츠λ₯Ό ν™•μΈν•˜μ„Έμš”!

swexpertacademy.com

 

풀이

쀑앙에 μžˆλŠ” ν–‰(λ§ˆλ¦„λͺ¨μ˜ λŒ€κ°μ„ )은 λͺ¨λ“  μ—΄μ˜ μˆ˜μ΅μ„ λ”ν•œλ‹€.

그리고 μœ„λ‘œ 갈수둝 λ˜λŠ” μ•„λž˜λ‘œ 갈수둝 μˆ˜μ΅μ„ λ”ν•˜λŠ” 열이 쀄어든닀.

μ΄λŸ¬ν•œ 점을 μ΄μš©ν•˜μ—¬, 쀑앙 ν–‰(n/2 ν–‰)과의 차이에 따라 각 ν–‰μ˜ μˆ˜μ΅μ„ 계산할 수 μžˆλ‹€.

ν˜„μž¬ ν–‰κ³Ό 쀑앙 ν–‰μ˜ 차이 = 0일 λ•Œ, 0 ~ n - 1 μ—΄μ˜ μˆ˜μ΅μ„ 얻을 수 μžˆλ‹€.
ν˜„μž¬ ν–‰κ³Ό 쀑앙 ν–‰μ˜ 차이 = 1일 λ•Œ, 1 ~ n - 2
ν˜„μž¬ ν–‰κ³Ό 쀑앙 ν–‰μ˜ 차이 = 2일 λ•Œ, 2 ~ n - 3
...
각 ν–‰μ—μ„œ num ~ (n - num) μ—΄μ˜ μˆ˜μ΅μ„ 얻을 수 μžˆλ‹€.

 

μ½”λ“œ

#include<iostream>
#include<vector>

using namespace std;

int calculate(int n, vector<vector<int>> &v) {
    int ans = 0;
    for (int i = 0; i < n; i++) {
        int num = abs(n / 2 - i);   // ν˜„μž¬ ν–‰κ³Ό 쀑앙 ν–‰μ˜ 차이
        for (int j = num; j < n - num; j++) {
            ans += v[i][j];
        }
    }

    return ans;
}

int main() {
    int T;
    cin >> T;

    for (int test_case = 1; test_case <= T; ++test_case) {
        int n, ans;  // 농μž₯의 크기, 수읡

        // μž…λ ₯
        cin >> n;
        vector<vector<int>> v(n, vector<int>(n, 0));

        for (int i = 0; i < n; i++) {
            string s;
            cin >> s;
            for (int j = 0; j < n; j++) {
                v[i][j] = s[j] - '0';
            }
        }

        // 좜λ ₯
        cout << '#' << test_case << ' ' << calculate(n, v) << '\n';
    }

    return 0;
}