알고리즘 정리/[swea]

[swea] 공부기록 day05

로미로미로 2024. 5. 8. 18:10

D2 마지막 문제

1954.  달팽이 숫자 (다른 코드 참고버전) 다시보기★

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int T = scan.nextInt();
		for(int i=0; i<T; i++) {
			int N = scan.nextInt();
			
			int [][] snail = new int[N][N];
			int number = 1;
			
			int X = 0;
			int Y = 0; //(0,0)부터 시작
			snail[Y][X] = number;
			boolean XPlus = true; //처음 시작 -> 순 
			boolean XMinus = false;
			boolean YPlus = false;
			boolean YMinus = false;
			
			for(int k=1; k<N*N; k++) {
				if(XPlus) X++;
				else if(XMinus) X--;
				else if(YPlus) Y++;
				else if(YMinus) Y--;
				
				if(XPlus == true) {
					if(X >= snail[0].length || (X<snail[0].length&&snail[Y][X]!=0)) {
						X--;
						Y++;
						XPlus = false;
						YPlus = true;
					}
				}
				if(YPlus == true) {
					if(Y >=snail.length ||(Y<snail.length && snail[Y][X] != 0)) {
						Y--;
						X--;
						YPlus = false;
						XMinus = true;
					}
				}
				if(XMinus == true) {
					if(X < 0 || (X>=0 && snail[Y][X] != 0)) {
						X++;
						Y--;
						XMinus = false;
						YMinus = true;
					}
				}
				if(YMinus == true) {
					if(YMinus && Y<0 || (Y>=0 && snail[Y][X] != 0)) {
						Y++;
						X++;
						YMinus = false;
						XPlus = true;
					}
				}
				snail[Y][X] = ++number;
			}
			
			System.out.println("#"+(i+1));
			for(int j=0; j<snail.length; j++) {
				for(int k=0; k<snail[0].length; k++) {
					System.out.print(snail[j][k] + " ");
				}
				System.out.println();
			}
			
		}
	}
}

 

D3 시작

3431. 준환이의 운동관리

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int T = scan.nextInt();
		for(int i=0; i<T; i++) {
			int L = scan.nextInt();
			int U = scan.nextInt();
			int X = scan.nextInt();
			
			System.out.print("#"+(i+1)+" ");
			if(X<L) {
				System.out.println(L-X);
			}
			else if(L <= X && X <= U) {
				System.out.println(0);
			}
			else {
				System.out.println(-1);
			}
		}
	}
}

 

10505. 소득 불균형

import java.util.Scanner;

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

 

6730. 장애물 경주 난이도

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int T = scan.nextInt();
		for(int i=0; i<T; i++) {
			int N = scan.nextInt();
			int [] arr = new int[N];
			int [] minus = new int[N-1];
			for(int j=0; j<N; j++) {
				arr[j] = scan.nextInt();
			}
			
			int max = 0;
			int min = 0;
			for(int j=0; j<N-1; j++) {
				minus[j] = arr[N-j-1] - arr[N-j-2];
				if(max < minus[j])
					max = minus[j];
				if(min > minus[j])
					min = minus[j];
			}
			System.out.printf("#%d %d %d\n", i+1, max, min*(-1));
			
		}
	}
}

 

4406. 모음이 보이지 않는 사람

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int T = scan.nextInt();
		for(int i=0; i<T; i++) {
			String S = scan.next();
			String N = "";
			for(int j=0; j<S.length(); j++) {
				char s = S.charAt(j);
				if(s != 'a' && s!='e' && s != 'i' && s != 'o' && s != 'u') {
					N += s;
				}
			}
			System.out.printf("#%d %s\n", i+1, N);
		}
	}
}

 

11688. Calkin-Wilf tree 1

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int T = scan.nextInt();
		for(int i=0; i<T; i++) {
			int a = 1;
			int b = 1;
			String S = scan.next();
			for(int j=0; j<S.length(); j++) {
				if(S.charAt(j) == 'L') {
					b = a + b;
				}
				else if(S.charAt(j) == 'R') {
					a = a + b;
				}
			}
			
			System.out.printf("#%d %d %d\n", i+1, a, b);
		}
	}
}