멀리 보는 연습

JAVA_festival 문제 풀이_2 본문

Study/Java Festival

JAVA_festival 문제 풀이_2

푸실리 2021. 6. 27. 23:42

 

지난 편에 이어 계속되는 자바 페스티벌 문제 풀이~

 

문제 16.

아래와 같이 1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 점(index)들을 출력하시오.

(단, 점들 사이의 거리는 모두 다르다.)

		int[] point = {92,32,52,9,81,2,68};
		
		int min =Math.abs(point[0]-point[1]);
		
		int a = 0;
		int b = 0;
		
		for(int i = 0;i<point.length;i++) {
			for(int j = 0; j<point.length;j++) {
				if(i!=j) {
					if(min>Math.abs(point[i]-point[j])) {
						min=Math.abs(point[i]-point[j]);
						a=i;
						b=j;
					}
				}
			}
		}System.out.print("result = ["+a+","+b+"]");

 

문제 17.

아래와 같은 2차원 배열을 왼쪽으로 90도 회전하여 출력하시오.

		int[][] arr = new int[5][5];
		int k = 1;
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				arr[i][j] = k;
				k++;
			}
		}
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");

			}
			System.out.println();

		}System.out.println();
		
		int[][] arr2 = new int[5][5];
		int k2 = 1;
		for (int i = 0; i < arr.length;i++) {
			for (int j = 4; j >= 0; j--) {
				arr[j][i] = k2;
				k2++;
			}
		}
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");

			}
			System.out.println();

		}

 

문제 18. 

다음과 같은 프로그램을 작성하시오. 

- N과 X를 입력 받는다.

- N개의 정수를 입력 받는다.

- N개의 숫자 중 X보다 작은 수만 출력한다.

 

		Scanner sc = new Scanner(System.in);
		int[] arr = new int[10];

		System.out.print("N 입력 : ");
		int N = sc.nextInt();

		System.out.print("X 입력 : ");
		int X = sc.nextInt();

		for (int i = 0; i < 10; i++) {
			System.out.print((i + 1) + "번째 정수 입력 : ");
			arr[i] = sc.nextInt();
		}
		System.out.print("결과 >> ");
		for (int i = 0; i < 10; i++) {
			if (arr[i] < X) {
				System.out.print(arr[i] + " ");

			}
		}

 

문제 19. 

가운데 글자 구하기.

public static void main(String[] args) {
		System.out.println(getMiddle("power"));

	}
	public static String getMiddle(String word) {
		String[] arr = word.split("");
			
		if(arr.length%2==0) {
			return arr[(arr.length/2)-1]+arr[arr.length/2];
		}
		else {
			return arr[arr.length/2];
		}
	}

 

문제 20.

아래와 같이 학생들의 성적 정보가 문자열로 선언되어 있을 때, 각 성적 별 학생 수를 출력하시오.

		String score = "A,A,B,C,D,A,C,D,D,D,F";
		int a = 0;
		int b = 0;
		int c = 0;
		int d = 0;
		int f = 0;
		String[] score2 = score.split(",");
		for (int i = 0; i < score2.length; i++) {
			if (score2[i].equals("A")) {
				a++;
			} else if (score2[i].equals("B")) {
				b++;
			} else if (score2[i].equals("C")) {
				c++;
			} else if (score2[i].equals("D")) {
				d++;
			} else {
				f++;
			}

		}
		System.out.println("A : " + a + "명");
		System.out.println("B : " + b + "명");
		System.out.println("C : " + c + "명");
		System.out.println("D : " + d + "명");
		System.out.println("F : " + f + "명");

 

문제 21.

숫자를 입력 받아 3의 배수인 숫자를 출력하는 프로그램을 작성하세요.

		Scanner sc = new Scanner(System.in);
		int[] arr = new int[10];
		for(int i = 0; i<10;i++) {
			System.out.print((i+1)+"번째 정수 입력 : ");
			arr[i] = sc.nextInt();
			
		}
		System.out.println("3의 배수 : ");
		for(int i = 0; i<10;i++) {
			if(arr[i]%3==0) {
				System.out.print(arr[i]);
			}
		}

문제 22. 

사용자에게 입력 받아 배열의 인덱스 수만큼 별을 출력해보세요.

		int[] arr = new int[5];
		Scanner sc = new Scanner(System.in);
		for(int i = 0;i<arr.length;i++) {
			System.out.print(i+"번째 별의 수 : ");
			arr[i] = sc.nextInt();
			
		}
		for(int i = 0;i<arr.length;i++) {
			System.out.print(arr[i]+" : ");
			for(int j = 0;j<arr[i];j++) {
				System.out.print("*");
			}System.out.println();
		}

 

문제 23.

단 수와 곱해지길 원하는 수를 입력하여 이와 같이 출력되게 하시오.

		Scanner sc = new Scanner(System.in);
		System.out.print("단수 입력 : ");
		int num1 = sc.nextInt();
		
		System.out.print("어느 수까지 출력 : ");
		int num2 = sc.nextInt();
		
		System.out.println(num1+"단");
		for(int i = 0;i<num2;i++) {
			System.out.println(num1+"*"+(i+1)+"="+(num1*(i+1)));
		}

 

문제 24. 

(세 자리 수) * (세 자리 수)는 다음과 같이 계산된다. (1),(2)번을 입력 받아 결과 화면처럼 (3),(4),(5),(6)번을 출력하는 프로그램을 작성하시오.

		Scanner sc = new Scanner(System.in);
		System.out.print("첫 번째 숫자 입력 : ");
		int num1 = sc.nextInt();
		
		System.out.print("두 번째 숫자 입력 : ");
		int num2 = sc.nextInt();
		
		System.out.println(num1*(num2%10));
		System.out.println(num1*((num2/10)%10));
		System.out.println(num1*(num2/100));
		System.out.println(num1*num2);

 

문제 25. 

그림과 같이 대시('-') 문자로 구성된 형태의 숫자를 주어진 숫자와 같이 출력하고 싶을 때 사용되게 되는 대시의 개수를 출력하는 프로그램을 작성하시오.

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("첫자리 0을 제외한 숫자를 입력해주세요 >> ");
		int num = sc.nextInt();
		System.out.print("대시('-')의 총합 >> ");
		System.out.println(Number(num));
		

	}
	public static int Number(int num) {
		int result = 0;
		int[] arr = {6,2,5,5,4,5,6,4,7,6};
		while(num>0) {
			int num2 = num%10;
			num/=10;
			result+=arr[num2];
		}return result;
	}

 

문제 26.

		Scanner sc = new Scanner(System.in);
		
		System.out.println("===채점하기===");
		String ans = sc.next();
		String[] arr = ans.split("");
		int score = 0;
		int sum = 0;
		for(int i = 0; i <arr.length;i++) {
			
			if(arr[i].equals("o")) {
				score++;
			}else {
				score = 0;
			}sum+=score;
			
		}
		System.out.println(sum);

 

문제 27.

정수 N을 입력 받아 N*N 배열에 다음과 같이 숫자를 저장하고 출력하시오.

		Scanner sc = new Scanner(System.in);
		System.out.print("정수 N 입력 : ");
		int N = sc.nextInt();
		int[][] arr = new int[N][N];

		boolean a = true;
		int k = 1;

		for (int i = 0; i < arr.length; i++) {
			if (a) {
				for (int j = 0; j < arr[i].length; j++) {
					arr[i][j] = k;
					k++;
					a = false;
				}
			} else {
				for (int j = arr[i].length - 1; j >= 0; j--) {
					arr[i][j] = k;
					k++;
				}
			}

		}for(int i = 0; i<arr.length;i++) {
			for(int j = 0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+"\t");
			}System.out.println();
		}

 

문제 28. 모래시계

알파벳 순서대로 다음과 같이 모래시계 모양대로 출력하는 코드를 작성하여 출력하시오.

		int[][] arr = new int[5][5];
		char ch = 'A';
		for(int i=0;i<arr.length;i++) {
			if(i<=2) {
				for(int j = i;j<=4-i;j++) {
					arr[i][j] = ch++;
				}
			}else {
				for(int j = 4-i;j<=i;j++) {
					arr[i][j] = ch++;
				}
			}
		}for(int i = 0;i<arr.length;i++) {
			for(int j = 0; j<arr[i].length;j++) {
				System.out.print((char)arr[i][j]+" ");
			}System.out.println();
		}

 

문제 29.

문자열 형태의 2진수를 입력 받아 10진수로 바꾸는 프로그램을 작성하시오.

 

		Scanner sc = new Scanner(System.in);
		System.out.print("2진수 입력 : ");
		String num = sc.next();
		
		int two = Integer.parseInt(num, 2);
		System.out.println(two);

 

문제 30. 합병

두개의 배열 A와 B를 합병 후 오름차순으로 정렬하여 변환하는 mergeArray 메소드를 완성하시오.

public static void main(String[] args) {
		int A[] = {1,3,5,7,9,11,13,15,17,19};
		int B[] = {2,4,6,8,10,12,14,16,18,20};
		int merge[] = mergeArray(A,B);
		System.out.println("Merge : "+Arrays.toString(merge));

	}
	public static int[] mergeArray(int A[],int B[]) {
		int[] C = new int[A.length+B.length];
		System.arraycopy(A, 0, C, 0, A.length);
		System.arraycopy(B, 0, C, A.length, B.length);
		Arrays.sort(C);
		return C;
	}

 

문제 31.

		Scanner sc = new Scanner(System.in);
		
		System.out.print("입력 : ");
		int num = sc.nextInt();
		System.out.print("출력 : ");
		int sum = 1;
		for(int i = 1 ; i<=num; i++) {
			sum*=i;
		}System.out.println(sum);
	}

 

 

'Study > Java Festival' 카테고리의 다른 글

JAVA_festival 보너스 문제 풀이  (0) 2021.06.27
JAVA_festival 문제 풀이_1  (0) 2021.06.27
Comments