02. 기본 자료구조
연습문제 Q1
static int maxOf(int[] a) {
int max = a[0];
for(int i=0; i<a.length; i++) {
if(a[i] > max) {
max = a[i];
}
}
return max;
}
public static void main(String[] args) {
Random rd = new Random();
int num = rd.nextInt(11)+1;
int [] height = new int[num];
for(int i=0; i<num; i++) {
height[i] = 100+rd.nextInt(90);
}
System.out.println("max값은 "+maxOf(height)+"입니다.");
}
연습문제 Q2
static void swap(int[] a, int idx1, int idx2) {
System.out.println(Arrays.toString(a));
System.out.println("a["+idx1+"]과(와) a["+idx2+"]를 교환합니다.");
int num = a[idx2];
a[idx2] = a[idx1];
a[idx1] = num;
}
static void reverse(int[] a) {
for(int i=0; i<a.length/2; i++) {
swap(a, i, a.length-i-1);
}
}
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();
}
reverse(a);
System.out.println(Arrays.toString(a));
System.out.println("역순 정렬을 마쳤습니다.");
}
연습문제 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("배열의 총 합은 ::: "+sumOf(a)+"입니다.");
}
연습문제 Q4
static void copy(int[] a, int[] b) {
for(int i=0; i<a.length; i++) {
a[i] = b[i];
}
// a = b.clone();
}
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.print("두 번째 배열의 크기 :::: ");
num = sc.nextInt();
int[] b= new int[num];
for(int i=0; i<num; i++) {
System.out.print("a["+i+"] ::: ");
a[i] = sc.nextInt();
}
copy(a, b);
System.out.println("첫 번째 배열 ::: "+Arrays.toString(a));
System.out.println("두 번째 배열 ::: "+Arrays.toString(b));
}
연습문제 Q5
static void reverse(int[] a) {
for(int i=0; i<a.length/2; i++) {
swap(a, i, a.length-i-1);
}
}
static void copy(int[] a, int[] b) {
for(int i=0; i
a[i] = b[i];
}
// a = b.clone();
}
static void rcopy(int[] a, int[] b) {
for(int i=0; i<a.length; i++) {
a[i] = b[b.length-i-1];
}
}
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.print("두 번째 배열의 크기 :::: ");
num = sc.nextInt();
int[] b= new int[num];
for(int i=0; i<num; i++) {
System.out.print("a["+i+"] ::: ");
a[i] = sc.nextInt();
}
rcopy(a, b);
System.out.println("첫 번째 배열 ::: "+Arrays.toString(a));
System.out.println("두 번째 배열 ::: "+Arrays.toString(b));
}
연습문제 Q6
static int cardConv(int x, int r, char[] d) {
int digits = 0;
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
do {
d[digits++] = dchar.charAt(x % r);
x /= r;
}while(x != 0);
for (int i = 0; i < digits / 2; i++) {
char num = d[digits-i-1];
d[digits-i-1] = d[i];
d[i] = num;
}
return digits;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] arr = new char[32];
int num;
int retry;
int no;
int idx;
System.out.println("10진수를 기수 변환합니다.");
do {
do {
System.out.print("변환하는 음이 아닌 정수 ::: ");
num = sc.nextInt();
}while(num < 0);
do {
System.out.print("어떤 진수로 변환할까요? (2~36) ::: ");
no = sc.nextInt();
}while(no < 2 || no > 36);
idx = cardConvR(num, no, arr);
System.out.print(no+"진수로는 ");
for(int i=idx-1; i>=0; i--) {
System.out.print(arr[i]);
}
System.out.println("입니다.");
System.out.print("한 번 더 할까요? (1. 예/0.아니오) ::: ");
retry = sc.nextInt();
}while(retry == 1);
}
연습문제 Q7
static int cardConvR(int x, int r, char[] d) {
int digits = 0;
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(r+" | "+x);
do {
System.out.println(" + ------------");
if((x/r) == 0) {
System.out.println(" "+(x/r)+" -- "+(x%r));
}else{
System.out.println(r+" | "+(x/r)+" -- "+(x%r));
}
d[digits++] = dchar.charAt(x % r);
x /= r;
}while(x != 0);
return digits;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] arr = new char[32];
int num;
int retry;
int no;
int idx;
System.out.println("10진수를 기수 변환합니다.");
do {
do {
System.out.print("변환하는 음이 아닌 정수 ::: ");
num = sc.nextInt();
}while(num < 0);
do {
System.out.print("어떤 진수로 변환할까요? (2~36) ::: ");
no = sc.nextInt();
}while(no < 2 || no > 36);
idx = cardConvR(num, no, arr);
System.out.print(no+"진수로는 ");
for(int i=idx-1; i>=0; i--) {
System.out.print(arr[i]);
}
System.out.println("입니다.");
System.out.print("한 번 더 할까요? (1. 예/0.아니오) ::: ");
retry = sc.nextInt();
}while(retry == 1);
}
'알고리즘' 카테고리의 다른 글
자료구조와 함께 배우는 알고리즘 입문[자바] - 6일차 (0) | 2022.12.08 |
---|---|
자료구조와 함께 배우는 알고리즘 입문[자바] - 5일차 (0) | 2022.11.21 |
자료구조와 함께 배우는 알고리즘 입문[자바] - 4일차 (0) | 2022.11.16 |
자료구조와 함께 배우는 알고리즘 입문[자바] - 3일차 (1) | 2022.11.15 |
자료구조와 함께 배우는 알고리즘 입문[자바] - 1일차 (0) | 2022.11.09 |