728x90
더보기
// i = 0부터 시작해서
// 중간 column을 찾은 뒤(index기준 N/2)
// i를 1씩 증가시켜가며 앞뒤로 i번째까지 더한다.
// row가 N/2를 넘어가면 i를 1씩 감소하기 시작해서
// 데이터를 다 받아오면 끝난다.
#include<iostream>
using namespace std;
int main() {
int tc;
cin >> tc;
for (int t = 0; t < tc; t++) {
int N, answer = 0;
cin >> N;
int i = 0, add = 1, mid = N / 2;
for (int j = 0; j < N; j++) {
int start = mid - i, end = mid + i, num;
for (int k = 0; k < N; k++) {
scanf("%1d", &num);
if (k >= start && k <= end) {
answer += num;
}
}
if (j == mid) add = -1;
i += add;
}
cout << "#" << t + 1 << " " << answer << endl;
}
}
문제
https://swexpertacademy.com/main/code/problem/problemDetail.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
728x90
[접근]
간단한 문제이기 때문에, 더 간단하게 풀 수 있는 방법을 고민했고, 데이터를 받아오는 동시에 답을 구해야겠다고 생각했다.
중간 column을 찾은 뒤(index기준 N/2)
i = 0부터 시작해서 i를 1씩 증가시켜가며 앞뒤로 i번째까지 answer에 가져온 값을 더한다.
row가 N/2를 넘어가면 i를 1씩 감소하기 시작해서 해당 범위 내의 값들을 asnwer에 더한다.
데이터를 다 받아오면 끝난다.
728x90
'coding > algorithm' 카테고리의 다른 글
| [programmers] Lv.2 소수 찾기(c++) (0) | 2022.06.27 |
|---|---|
| [SW Expert Academy] D3 1215. 회문1 (0) | 2022.05.28 |
| [백준 && SW] gold5/D3 N-Queen (0) | 2022.05.27 |
| [백준/baekjoon] Silver1 2667. 단지번호붙이기 (0) | 2022.05.27 |
| [programmers] Lv.3 네트워크(c++) (0) | 2022.05.25 |
댓글