Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- srt
- 그림판유저
- Eclipse
- SJF
- 별찍기
- 운영체제
- 스케줄러
- 톰캣
- 백준
- priority scheduling
- CPU
- 농작물수확하기
- 다운로드
- OS
- BOJ
- 2805
- FCFS
- 마름모
- scheduler
- SWEA
- 백준2869
- Server
- acmicpc
- 톰캣다운로드
- 달팽이는올라가고싶다
- RR
- 이클립스
- 맥
- swexpert
- tomcat
Archives
- Today
- Total
그림판유저의 은밀한 개발
[SWEA] swexpert 2805 - 농작물 수확하기 본문
SW Expert Academy 2805 - 농작물 수확하기
N x N 크기의 농장에서 다음과 같은 규칙을 가지고 수확을 합니다.
① 농장은 크기는 항상 홀수이다. (1 X 1, 3 X 3 … 49 X 49)
② 수확은 항상 농장의 크기에 딱 맞는 정사각형 마름모 형태로만 가능하다.
위의 규칙을 그림을 그려 확인하면 다음과 같습니다.
이것은 N x N 안에 마름모 모양으로 별 찍기라고 생각하면 쉽습니다.
먼저, 마름모 모양의 별을 찍기 위해서는 일단 먼저 두 부분으로 나누어야 합니다.
위, 아래로 나누어 증가하는 부분과 감소하는 부분을 나눌 수 있습니다.
그 후에 아래와 같이 별은 중간에서부터 시작하므로 중간을 나누어 그것을 기준으로 열의 위치를 잡습니다.
처음은 (n/2, n/2), ... (i, n-i), ... (0, n) 까지 도달하게 합니다.
아래부분도 윗부분과 마찬가지지만, n/2에서 줄어드는게 아닌, 0부터 n/2까지 증가하면서 for문을 돌려주면 됩니다.
이렇게 모양이 잡히면 그 때 배열안의 값을 더해 농작물들을 수확합니다.
위의 공식을 적용한 코드는 다음과 같습니다.
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 | import java.util.Scanner; public class Solution { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int tc = sc.nextInt(); for(int t=1; t<=tc; t++) { int n = sc.nextInt(); int sum=0; for(int i=n/2; i>=0; i--) { String s = sc.next(); for(int j=i; j<n-i; j++) { sum += s.charAt(j)-'0'; } } for(int i=1; i<=n/2; i++) { String s = sc.next(); for(int j=i; j<n-i; j++) { sum += s.charAt(j)-'0'; } } System.out.println("#" + t + " " + sum); } } } | cs |