Doit! 알고리즘 (4)

업데이트:


chap02-01

package chap02;
import java.util.Random;

public class Q1 {
	
	static int maxOf(int[] a) {
		int max = a[0];
		for(int i = 0; i < a.length; i++) {
			if(max < a[i]) max = a[i];
		}
		return max;
	}
	
	public static void main(String[] args) {
		Random rand = new Random();
		
		System.out.println("키의 최댓값 구하기");
		System.out.print("사람 수 : ");
		int n = rand.nextInt(11);
		System.out.println(n);
		int[] height = new int[n];
		
		System.out.println("키 값은 아래와 같음");
		
		for(int i = 0; i < n; i++) {
			height[i]= 100 +  rand.nextInt(90); // 요소의 값을 난수로 결정 
			System.out.println("height[" + i + "] : " + height[i]);
		}
		
		System.out.println("최댓값은 " + maxOf(height)+ "입니다." );
	} 
}



chap02-02

package chap02;
import java.util.Scanner;

public class Q2 {
	
	static void swap(int[]x, int idx1, int idx2) {
		int t = x[idx1];
		x[idx1] = x[idx2];
		x[idx2] = t;
	}
	
	static void reverse(int[] x) {
		for(int i = 0; i < x.length / 2; i++) {
			for(int j = 0; j < x.length; j++) {
				System.out.print(x[j] + " ");
			}
			System.out.println("\nx[" + i + "]과(와) x[" + (x.length - i -1) + "]를 교환합니다.");
			swap(x, i, x.length - i - 1);
		}
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("요솟수 : ");
		int num = sc.nextInt();
		
		int[] x = new int[num];
		
		for(int i = 0; i < num;  i++) {
			System.out.print("x[" + i + "] : ");
			x[i] = sc.nextInt();
		}
		
		reverse(x);
		
		System.out.println("역순 정렬 마쳤습니다.");
	}
}


답안에서는 02-02 이 부분을 print라는 메소드를 만들어 reverse 메소드 내에서 print 메소드를 호출한다.

static void print(int[] a) {
	for (int i = 0; i < a.length; i++)
		System.out.print(a[i] + " ");
	System.out.println();
}



chap02-03

package chap02;
import java.util.Scanner;

public class Q3 {
	
	static int sumOf(int[] a) {
		int sum = 0;
		
		for(int i = 0; i < a.length; i++) {
			sum += a[i];
		}
		return sum;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("요솟수 : ");
		int num = sc.nextInt();
		
		int[] a = new int[num];
		
		for(int i = 0; i < num; i++) {
			System.out.print("a[" + i + "] : ");
			a[i] = sc.nextInt();
		}
		
		System.out.println("배열 a의 모든 요소 합계 : " + sumOf(a));
	}
}



chap02-04

package chap02;
import java.util.Scanner;

public class Q4 {
	static void copy(int[] a, int[] b) {
		int num = a.length;
		if(a.length >= b.length) {
			num = b.length;
		}
		
		for(int i = 0; i < num; i++) {
			a[i] = b[i];
		}
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		System.out.print("배열 a의 요솟수 : ");
		int numA = sc.nextInt();
		int[] a = new int[numA];
		
		for(int i = 0; i < numA; i++) {
			System.out.print("a[" + i + "] : ");
			a[i] = sc.nextInt();
		}
		
		System.out.print("배열 b의 요솟수 : ");
		int numB = sc.nextInt();
		int[] b = new int[numB];
		
		for(int i = 0; i < numB; i++) {
			System.out.print("b[" + i + "] : ");
			b[i] = sc.nextInt();
		}
		
		copy(a, b);
		System.out.println("복사 완료");
		for(int i = 0; i < numA; i++) {
			System.out.println("a[" + i + "] = " + a[i]);
		}
	}
}


답안에서는 copy 메소드 안에 for문 제어식에 들어갈 num 부분을 삼항연산자로 간단하게 구한다.

int num = a.length <= b.length ? a.length : b.length;


삼항연산자는 자주 써보지 않아서 바로 떠올리기가 어렵다😂


chap02-05

package chap02;
import java.util.Scanner;

public class Q5 {

	static void rcopy(int[] a, int[] b) {
		int num = a.length;
		if(a.length >= b.length) {
			num = b.length;
		}
		
		for(int i = 0; i < num; i++) {
			a[i] = b[num - i - 1];
		}
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		System.out.print("배열 a의 요솟수 : ");
		int numA = sc.nextInt();
		int[] a = new int[numA];
		
		for(int i = 0; i < numA; i++) {
			System.out.print("a[" + i + "] : ");
			a[i] = sc.nextInt();
		}
		
		System.out.print("배열 b의 요솟수 : ");
		int numB = sc.nextInt();
		int[] b = new int[numB];
		
		for(int i = 0; i < numB; i++) {
			System.out.print("b[" + i + "] : ");
			b[i] = sc.nextInt();
		}
		
		rcopy(a, b);

		System.out.println("역순 복사 완료");
		for(int i = 0; i < numA; i++) {
			System.out.println("a[" + i + "] = " + a[i]);
		}
	}
}



태그:

카테고리:

업데이트:

댓글남기기