알고리즘 정리/[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();
}
}
}
}