본문 바로가기
알고리즘/Samsung

SW 2001. 파리퇴치

by son_i 2023. 4. 18.
728x90

SW Expert Academy

 

SW Expert Academy

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

swexpertacademy.com

M*M 배열을 만들고 그안에 숫자들 입력.

M*M크기 파리채로 내리쳤을 때 가장 큰 수 출력

 

어제 상당히 복잡하게 짰었던 것 같은데 다시 생각하면서 

간단하게 손코딩을 해봤다.

 

먼저 for문이 4중인데 겉에 2중은 배열의 범위 안 + 파리채로 갈 수 있는 최대의 좌표 ex) 5*5배열에 3*3파리채면 (2,2)가 최대로 시작할 수 있는 좌표

 

그리고 안에 for문 두 개는 겉 for문으로 정해진 좌표를 시작으로 파리채 넓이 M*M까지 돌면서 그 안의 값들을 더해주고 최댓값을 찾아내주는 역할.

 

여기서 처음에 고려 못 헀던 건 안for문 int k,m = 0;으로 했는데 이러면 좌표의 시작을 겉 for문으로 지정해놓은 의미가 없음.  i랑 j부터 시작을 해야하고 i와 j가 증가하면서 안 for문 2개의 조건식에도 더해줘야 파리채의 넓이만큼 더해갈 수 있따.

package algorithm;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
public class Solution
{
	public static void main(String args[]) throws Exception
	{
		//System.setIn(new FileInputStream("C:\\so_Project\\workspace\\BaekJoon\\src\\algorithm\\input.txt"));

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int num = Integer.parseInt(br.readLine()); //테스트 케이스의 수 
	
		for(int q=1;q<=num;q++) { //테스트 케이스만큼 반복
			
			StringTokenizer st = new StringTokenizer(br.readLine());
			int N = Integer.parseInt(st.nextToken());
			int M = Integer.parseInt(st.nextToken());
			int arr[][] = new int[N][N];
			
			for(int w=0;w<N;w++) { //배열에 파리 갯수 값 저장
				st = new StringTokenizer(br.readLine());
				for(int k=0;k<N;k++) 
						arr[w][k] = Integer.parseInt(st.nextToken());				
			}
			
			int max = 0; //잡는 파리의 최댓값
			for(int i =0;i<=N-M;i++) {
				for(int j = 0;j<=N-M;j++){
					int sum = 0;
					for(int k=i;k<i+M;k++) {
						for(int m=j;m<j+M;m++) {
							sum+= arr[k][m];
						}
					}
					if(max<sum)
						max = sum;
				}
			}
			System.out.println("#"+q+" "+max);
		}			
	}
}

'알고리즘 > Samsung' 카테고리의 다른 글

SW 1961. 숫자 배열 회전  (0) 2023.04.27
SW 1983.조교의 성적 매기기  (1) 2023.04.18
SW 2005. 파스칼의 삼각형  (0) 2023.04.14
SW 2007. 패턴 마디의 길이  (0) 2023.04.14
SW 1859. 백만 장자 프로젝트  (0) 2023.04.13