카테고리 없음

[SWEA 2805 / d3 / 구현 / Java] 농작물 수확하기

배발자 2022. 8. 2.
반응형

별 찍기 문제와 매우 유사하다. 

 

마름모 안에 들어있는 값을 모두 더해서 출력하면 되는 문제인데, 

예를 들어 7 X 7 의 형태의 맵이 주어졌다고 가정하자.  

 

[데칼코마니 : 상&하 같은 모양 ] 규칙 찾기 

(3칸띄우고) map[0][3]  ( 공백 : 3개  , 더할 값 : 1개 )

(2칸띄우고) map[1][2]~map[1][4]  (공백 : 2개, 더할 값 : 2개)

(1칸띄우고) map[2][1]~map[2][5] (공백 : 1개, 더할 값 : 3개) 

--------------------------------기준선-------------------------------------------

(0칸띄우고) map[3][0]~map[3][6] (공백 : 0개 , 더할 값 : 5개) 

--------------------------------기준선-------------------------------------------

(1칸띄우고) map[4][1]~map[4][5] (공백 : 1개, 더할 값 : 3개) 

(2칸띄우고) map[5][2]~map[5][4]  (공백 : 2개, 더할 값 : 2개)

(3칸띄우고) map[6][3]  ( 공백 : 3개  , 더할 값 : 1개 )

 

 

#접근 방법

1. 시작행과 끝행을 가리키는 down(아래방향으로 가는 행), up(윗방향으로 가는 행) 변수 생성하고 동시에 탐색

2. up 과 down이 교차하기 전까지 sum 변수에 값 더하기. (해당 행의 index 부터 rowSize크기만큼) *최초 index = sz/2+1

 - 공백의 크기(index : 해당 행의 더할 데이터의 시작 위치를 의미) 는 하나씩 작아진다.  (index--)

 - 더할 데이터의 크기는 2개씩 커진다. (rowSize+=2)

 - down ++ , up-- 갱신  

3. up과 down 이 가리키는 행이 같다면 마지막으로 그 행의 데이터값을 다 더해주고 출력 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {

	static int [][] map;
	static int down, up, rowSize, index, sum; 
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
		int testCase = Integer.parseInt(br.readLine());
		for(int x=1; x <= testCase; x++	) {
			int sz = Integer.parseInt(br.readLine());
			map = new int[sz+1][sz+1]; 
			for(int i=1; i<=sz; i++) {
				String s= br.readLine(); 
				for(int j=0; j<sz; j++) {
					map[i][j+1] = s.charAt(j)-'0'; 
				}
			}
			sum=0; 
			rowSize = down =1; 
			up = sz; 
			index = sz/2+1; 
			while(up>down) {
				for(int i= index ; i<index + rowSize; i++) {
					sum+=map[down][i]; 					
					sum+=map[up][i]; 
				}
				down++; up--; index--; rowSize+=2; 
			}
			for(int i=1; i<=sz; i++) sum+=map[up][i];			
			System.out.printf("#%d %d%n", x, sum);
		}
	}
}
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

반응형

댓글