알고리즘 정리/[swea]

[swea] 공부기록 day02

로미로미로 2024. 5. 5. 00:30

 

1959. 두 개의 숫자열

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int [] N = new int[n];
        for(int i=0; i<n; i++)
        {
        	int a = scan.nextInt();
        	int b = scan.nextInt();
        	
        	int [] A = new int[a];
        	int [] B = new int[b];
        	
        	for(int j=0; j<a; j++)
        	{
        		A[j] = scan.nextInt();
        	}
        	for(int j =0; j<b; j++)
        	{
        		B[j] = scan.nextInt();
        	}
        	int max = 0;
        	int result=0;
        		if(a<b)
        		{
        			
        			int c = b-a; 
        			for(int x=0; x<=c; x++)
        			{
        				result = 0;
        				for(int y=0; y<a; y++)
        				{
        					result += A[y]*B[y+x];
        				}
        				if(max < result)
        					max = result;
        			}
        		}
        		else
        		{
        			
        			int c = a-b; 
        			for(int x=0; x<=c; x++)
        			{
        				result = 0;
        				for(int y=0; y<b; y++)
        				{
        					result += A[y+x]*B[y];
        				}
        				if(max < result)
        					max = result;
        			}
        		}
        	N[i] = max;
        }
        for(int i=0;i<n;i++)
        {
        	System.out.printf("#%d %d\n", i+1, N[i]);
        }
    }
}

 

1966. 숫자를 정렬하자

import java.util.Arrays;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int [] N= new int[n];
        int [][] Number = new int[n][];
        for(int i=0; i<n; i++)
        {
        	int num = scan.nextInt();
        	N[i] = num;
        	Number[i] = new int[num];
        	for(int j=0; j<num; j++)
        	{
        		Number[i][j] = scan.nextInt();
        	}
        	Arrays.sort(Number[i]);
        	
        	
        }
        
        for(int i=0;i<n; i++)
        {
        	System.out.printf("#%d", i+1);
        	for(int value : Number[i]) {
        		System.out.print(" "+value);
        	}
        	System.out.println();
        }
    }
}

 

 

1948. 날짜계산기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int []day = new int[n];
        int days[] = {0,31, 28,31,30,31,30,31,31,30,31,30,31};
        for(int i=0;i<n;i++)
        {
        	int a = scan.nextInt();
        	int b = scan.nextInt();
        	int c = scan.nextInt();
        	int d = scan.nextInt();
        

        	for(int j=a; j<c; j++)
        	{
        		day[i] += days[j];
        	}
        	day[i] = day[i]-b+d+1;
        	
        }
        for(int i=0; i<n; i++)
        {
        	System.out.printf("#%d %d\n",i+1,day[i]);
        }
    }
}

 

1979. 어디에 단어가 들어갈 수 있을까

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int [] Num = new int[n];
        for(int i=0; i<n; i++)
        {
        	int N = scan.nextInt();
        	int K = scan.nextInt();
        	int [][] arr = new int[N][N];
        	for(int j=0; j<N; j++)
        	{
        		for(int k=0; k<N; k++)
        			arr[j][k] = scan.nextInt();
        	}
        	
        	for(int j=0; j<N; j++)
        	{
        		int d=0;
        		for(int k=0; k< N; k++)
        		{
        			if(arr[j][k] == 0)
        			{
        				if(d == K)
        					Num[i] += 1;
        				d = 0;
        			}
        			else
        				d += 1;
        		}
        		if(d == K)
        			Num[i] += 1;
        	}
        	
        	for(int j=0; j<N; j++)
        	{
        		int d=0;
        		for(int k=0; k< N; k++)
        		{
        			if(arr[k][j] == 0)
        			{
        				if(d == K)
        					Num[i] += 1;
        				d=0;
        			}
        			else
        				d += 1;
        		}
        		if(d == K)
        			Num[i] += 1;
        	}
        	
        	
        }
        for(int i=0; i<n; i++)
        {
        	System.out.printf("#%d %d\n", i+1, Num[i]);
        }
    }
}

 

 

1961. 숫자 배열 회전

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        for(int i=0; i<n; i++)
        {
        	int size = scan.nextInt();
        	int [][]arr = new int[size][size];
        	int [][]arr_90 = new int[size][size];
        	int [][]arr_180 = new int[size][size];
        	int [][]arr_270 = new int[size][size];
        	for(int j=0; j<size; j++)
        	{
        		for(int k=0; k<size; k++)
        			arr[j][k] = scan.nextInt();
        	}
        	
        	
        	for(int k=0; k<size; k++)
        	{
        	for(int j=0; j<size; j++)
        		arr_90[k][j] = arr[size-1-j][k];
        	}
        	
        	for(int k=0; k<size; k++)
        	{
        	for(int j=0; j<size; j++)
        		arr_180[k][j] = arr[size-1-k][size-1-j];
        	}
        	
        	for(int k=0; k<size; k++)
        	{
        	for(int j=0; j<size; j++)
        		arr_270[k][j] = arr[j][size-1-k];
        	}
        	
        	System.out.printf("#%d\n",i+1);
        	for(int j=0; j<size; j++)
        	{
        		for(int k=0; k<size; k++)
        		{
        			System.out.print(arr_90[j][k]);
        		}
    			System.out.print(" ");
        		
        		for(int k=0; k<size; k++)
        		{
        			System.out.print(arr_180[j][k]);
        		}
    			System.out.print(" ");
        		
        		for(int k=0; k<size; k++)
        		{
        			System.out.print(arr_270[j][k]);
        		}
        		
        		System.out.println();
        	}
        	
        }
    }
}