Q2. 배열 요소를 역순으로 정렬하는 과정을 하나하나 나타내는 ㅍ로그램을 작성하세요
Q3. 배열 a의 모든 요소의 합계를 구하여 반환하는 메서드를 작성하세요
Q4. 배열 b의 모든 요소를 배열 a에 복사하는 메서드작성
Q5. 배열 b의 모든 요소를 배열 a에 역순으로 복사하는 메서드 작성\
package algo;
import java.util.*;
public class multiple {
public static void main(String[] args) {
// TODO Auto-generated method stub
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("요소를 역순으로 정렬했습니다.");
System.out.println("x = " + Arrays.toString(x));
}
static void swap(int[] a, int idx1, int idx2) {
int t = a[idx1];
a[idx1] = a[idx2];
a[idx2] = t;
System.out.println(Arrays.toString(a)); //Q2
System.out.println("x["+idx1+"]"+"과"+"x["+idx2+"]"+"을 교환합니다.");
}
static void reverse(int[] a) {
for (int i = 0; i<a.length/2; i++) {
swap(a, i, a.length - i - 1);
}
}
static void sumOf(int[] a) { //Q3
int sum = 0;
for (int i = 0; i<a.length; i++) {
sum += a[i];
}
System.out.println(sum);
}
static void copy(int[] a, int[] b) { //Q4
for (int i = 0; i<a.length; i++ ) {
b[i] = a [i];
}
}
static void rcopy(int[] a, int[] b) { //Q5
for (int i = 0; i<a.length/2; i++) {
swap(a, i, a.length - i - 1);
int t = a[i];
b[i] = a[a.length - i - 1];
b[a.length - i - 1] = t;
}
}
}
}
//이따가 더 작성하기..21.05.04.2:51..아님 낼 더 하거나
P~75
package algo;
import java.util.*;
public class multiple {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int no;
int cd;
int dno;
int retry;
char[] cno = new char[32];
System.out.println("10진수를 기수 변환합니다.");
do {
do {
System.out.println("변환하는 음이 아닌 정수: ");
no = sc.nextInt();
}while (no < 0);
do {
System.out.println("어떤 진수로 변환할까요? (2~36): ");
cd = sc.nextInt();
}while (cd < 2 || cd > 36);
dno = cardConv(no, cd, cno);
System.out.print(cd+"진수로");
for (int i=0; i<dno; i++)
System.out.println(cno[i]);
System.out.print("입니다.");
System.out.print("한 번 더 할까요? (1..예 / 0..아니요) : ");
retry = sc.nextInt();
}while (retry == 1);
}
//정수x를 정수r로 변환한 숫자 문자를 char형 배열 d에 넣어두고 그 자릿수를 반환
static int cardConv(int x, int r, char[] d) {
int digits = 0;
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUWXYZ"; //이놈은 왜쓰는걸까?? -> 인덱스로 진수 변환한 값을 나타내려고
//r로 나눈 나머지를 저장
do {
d[digits++] = dchar.charAt(x%r);
x /= r;
}while(x != 0);
//배열 역순 저장 -> 왜냐면 거꾸로 읽으니까ㅐㅐ
for (int i = 0; i<digits/2; i++) {
char t = d[i];
d[i] = d[digits - i - 1];
d[digits - i - 1] = t;
}
return digits;
}
}
소수 나열하기 ~p85 -> 알고리즘 3은 흠.. 이해가 잘안됨. 다시 보기
package algo;
import java.util.*;
public class multiple {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int counter = 0;
//2-7 2부터 1씩 증가하면서 그 값이 소수인지 판단 - 상당히 비효율, 불필요한 계산 많음
for (int n=2; n <= 1000; n++) {//2부터 1000까지 분석하기 위함
int i;
for (i = 2; i < n; i ++) {
counter++;
if (n%i == 0) {
break;
}
}
if (n==i)
System.out.println(n);
}
System.out.println("나눗셈을 수행한 횟수: " + counter);;
//2-8 소수를 배열로 저장해서, 저장한 소수로 나눗셈을 진행
int counter2 = 0;
int ptr = 0;
int[] prime = new int[500];
prime[ptr++] = 2;
for (int n = 3; n <= 1000; n += 2) {
int i;
for (i = 1; i < ptr; i++) {
counter2++;
if(n%prime[i] == 0)
break;
}
if (ptr == i)
prime[ptr++] = n;
}
for (int i=0; i < ptr; i++)
System.out.println(prime[i]);
System.out.println("나눗셈을 수행한 횟수: " + counter2);
//같은 답을 얻는 알고리즘이 하나로 한정되지 않는다.
//빠른 알고리즘은 메모리를 많이 필요로 하는 경향이 있음.배열같은
//알고리즘#3. 정사각형으로부터 파생되는 제곱근을 기준으로 해당 수보다 큰 수에 대한 연산을 줄이는 방법
int counter3 = 0;
int ptr3 = 0;
int[] prime3 = new int[500];
prime3[ptr3++] = 2;
prime3[ptr3++] = 3;
for (int n=5; n <=1000; n += 2) { //조사대상은 홀수만
boolean flag = false;
for (int i = 1; prime3[i] * prime3[i] <= n; i++) {
counter3 +=2;
if (n % prime3[i] == 0) { //나눠떨어지면 소수가 아님
flag = true;
break;
}
}
if (!flag) {
prime3[ptr3++] = n;
counter3++;
}
}
for (int i = 0; i < ptr3; i++)
System.out.println(prime3[i]);
System.out.println("곱셈과 나눗셈을 수행한 횟수: " + counter3);
}
}
소감 : 아.. 소수 구하기 쉽지않네 무슨 아리스토테네스의 체(?)방법도 있엇던기억이 있는데 그건 뭘까..
일단 졸려우니까 엎어져퍼져자야겠다..
728x90
'자료구조당' 카테고리의 다른 글
Do it! 자료구조와 함께 배우는 알고리즘 입문 : Comparator, Generics (8) | 2023.05.23 |
---|---|
doit (0) | 2023.05.13 |
Do it! 자료구조와 함께 배우는 알고리즘 입문 - 자바 편 (p.111~115) [ 검색 알고리즘 ] (0) | 2023.05.11 |
Do it! 자료구조와 함께 배우는 알고리즘 입문 - 자바 편 (p.~110) [ 검색 알고리즘 ] (0) | 2023.05.10 |
Do it! 자료구조와 함께 배우는 알고리즘 입문 - 자바 편 (p.46~49) (0) | 2023.05.03 |