반응형
- C0903정렬
- C0903개념01_정렬_이차원_오름차순
package C0903정렬;
import java.util.Arrays;
import java.util.Collections;
public class C0903개념01_정렬_이차원_오름차순 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
int[][] student = {
{1001, 100, 20, 32},
{1002, 40, 43, 12},
{1003, 60, 21, 42},
{1004, 76, 54, 55},
{1005, 23, 11, 76}
};
/*
[문제]
국어 점수순으로 오름차순정렬을 하시오.
[정답]
[1005, 23, 11, 76]
[1002, 40, 43, 12]
[1003, 60, 21, 42]
[1004, 76, 54, 55]
[1001, 100, 20, 32]
*/
/*
int[][] 배열은 형변환없이 람다식 정렬이 가능하다.
int[] 배열만 형변환한다.
*/
//Arrays.sort(1,2);
//1번에는 배열을 넣는다.
//2번에는 (a,b)->{}
//Arrays.sort(student, (a,b) -> {});
// 내림차순은 -1 과 1을 서로 바꾸어 적으면된다.
Arrays.sort(student, (a , b)->{
if(a[1] < b[1]) {
return -1;
}else if(a[1] > b[1]) {
return 1;
}else {
return 0;
}
});
for(int i = 0; i < student.length; i++) {
System.out.println(Arrays.toString(student[i]));
}
}
}
- C0903개념02_다중정렬_이차원
package C0903정렬;
import java.util.Arrays;
import java.util.Collections;
public class C0903개념02_다중정렬_이차원 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
int[][] student = {
{1001, 100, 20, 32},
{1002, 40, 43, 12},
{1003, 60, 21, 42},
{1004, 76, 54, 55},
{1005, 60, 11, 76}
};
/*
[다중정렬]
다중정렬이란, 학생들 점수순으로 정렬한다고했을때,
똑같은 점수가 있을수있다.
그럼면 그다음 정렬기준을 정하는것을 다중정렬이라고한다.
다중정렬 연습을 위해 1003 번과 1005번의 국어점수를 둘다 60점으로 수정했다.
*/
/*
[문제]
국어 점수순으로 오름차순정렬을 하시오.
단, 국어점수가 같으면 수학점수로 오름차순정렬하시오.
[정답]
[1002, 40, 43, 12]
[1005, 60, 11, 76]
[1003, 60, 21, 42]
[1004, 76, 54, 55]
[1001, 100, 20, 32]
*/
Arrays.sort(student, (a , b)->{
if(a[1] < b[1]) {
return -1;
}else if(a[1] > b[1]) {
return 1;
}else {
if(a[2] < b[2]) {
return -1;
}else if(a[2] > b[2]) {
return 1;
}else {
return 0;
}
}
});
for(int i = 0; i < student.length; i++) {
System.out.println(Arrays.toString(student[i]));
}
}
}
- C0903개념03_정렬_이차원_문자_오름차순
package C0903정렬;
import java.util.Arrays;
public class C0903개념03_정렬_이차원_문자_오름차순 {
public static void main(String[] args) {
/*
member 배열은 회원목록 리스트이다.
데이터는 순서대로 번호, 이름, 등급 이다.
*/
String[][] member = {
{"1001", "김철수", "A"},
{"1002", "이만수", "B"},
{"1003", "오수정", "C"},
{"1004", "박만삼", "A"},
{"1005", "이영희", "B"},
{"1006", "송민아", "B"},
{"1007", "이영희", "A"},
{"1008", "이만수", "A"},
};
/*
[문제]
학생들을 이름순으로 오름차순 정렬하시오.
[정답]
[1001, 김철수, A]
[1004, 박만삼, A]
[1006, 송민아, B]
[1003, 오수정, C]
[1002, 이만수, B]
[1008, 이만수, A]
[1005, 이영희, B]
[1007, 이영희, A]
*/
//문자열
//문자열은 크다 작다를 할 수 없다.
//compareTo을 쓴다.
Arrays.sort(member , (a , b)->{
if(a[1].compareTo(b[1]) < 0) {
//
return -1;
}
else if(a[1].compareTo(b[1]) > 0) {
return 1;
}else {
return 0;
}
});
for(int i = 0; i < member.length; i++) {
System.out.println(Arrays.toString(member[i]));
}
}
}
- C0903개념04_다중정렬_이차원_문자
package C0903정렬;
import java.util.Arrays;
public class C0903개념04_다중정렬_이차원_문자 {
public static void main(String[] args) {
/*
member 배열은 회원목록 리스트이다.
데이터는 순서대로 번호, 이름, 등급 이다.
*/
String[][] member = {
{"1001", "김철수", "A"},
{"1002", "이만수", "B"},
{"1003", "오수정", "C"},
{"1004", "박만삼", "A"},
{"1005", "이영희", "B"},
{"1006", "송민아", "B"},
{"1007", "이영희", "A"},
{"1008", "이만수", "A"},
};
/*
[문제]
학생들을 이름순으로 오름차순 정렬하시오.
단, 이름이 같으면 등급순으로 오름차순하시오.
[정답]
[1001, 김철수, A]
[1004, 박만삼, A]
[1006, 송민아, B]
[1003, 오수정, C]
[1008, 이만수, A]
[1002, 이만수, B]
[1007, 이영희, A]
[1005, 이영희, B]
*/
Arrays.sort(member , (a , b)->{
if(a[1].compareTo(b[1]) < 0) {
return -1;
}
else if(a[1].compareTo(b[1]) > 0) {
return 1;
}else {
if(a[2].compareTo(b[2]) < 0) {
return -1;
}
else if(a[2].compareTo(b[2]) > 0) {
return 1;
}else {
return 0;
}
}
});
for(int i = 0; i < member.length; i++) {
System.out.println(Arrays.toString(member[i]));
}
}
}
- C0904이차배열완전탐색
- C0904개념01_이차배열완전탐색
package C0904이차배열완전탐색;
import java.util.Arrays;
public class C0904개념01_이차배열완전탐색 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
int[][] student = {
{1001, 100, 20, 32},
{1002, 40, 43, 12},
{1003, 60, 21, 42},
{1004, 76, 54, 55},
{1005, 23, 11, 76}
};
int[] search = {1002, 1004, 1003, 1001, 1005};
/*
[문제]
search 배열은 학생들이 시험 결과가 궁금해서 검색한 번호들이다.
각 학생이 검색한 순서대로 학생정보를 출력하시오.
[정답]
1002,40,43,12
1004,76,54,55
1003,60,21,42
1001,100,20,32
1005,23,11,76
*/
for(int i=0; i<search.length; i++) {
for(int j=0; j< student.length; j++) {
if(search[i] == student[j][0]) {
System.out.println(Arrays.toString(student[j]));
}
}
}
}
}
- C0904개념02_이차배열완전탐색
package C0904이차배열완전탐색;
import java.util.Arrays;
public class C0904개념02_이차배열완전탐색 {
public static void main(String[] args) {
/*
student 배열은 순서대로 ["번호", "이름", "성별"] 의 데이터 이고,
score 배열은 순서대로 ["번호", "국어", "수학"] 의 데이터이다.
*/
/*
[문제]
학생번호 , 이름 , 점수 두개를 출력하시오.
[정답]
[1001, 이만수, 10, 20]
[1002, 이영희, 70, 30]
[1003, 김민정, 64, 65]
[1004, 이철민, 13, 87]
[1005, 오만석, 49, 80]
[1006, 최이슬, 14, 90]
*/
String[][] student = {
{"1001", "이만수", "남"},
{"1002", "이영희", "여"},
{"1003", "김민정", "여"},
{"1004", "이철민", "남"},
{"1005", "오만석", "남"},
{"1006", "최이슬", "여"}
};
int[][] score = {
{1001 , 10, 20},
{1002 , 70, 30},
{1003 , 64, 65},
{1004 , 13, 87},
{1005 , 49, 80},
{1006 , 14, 90}
};
/*
위와 같이 배열이 두개가 데이터를 나눠서 가지고있다면,
하나의 새로운 배열에 저장하는것이 좋다.
*/
String[][] viewList = new String[student.length][4];
//새로운 배열을 만든다.
for(int i = 0; i < student.length; i++){
viewList[i][0] = student[i][0];
viewList[i][1] = student[i][1];
viewList[i][2] = score[i][1] + ""; //"" => 강제 형변환. 문자열
viewList[i][3] = score[i][2] + "";
}
for(int i = 0; i < viewList.length; i++){
System.out.println(Arrays.toString(viewList[i]));
}
}
}
- C0904개념03_정렬
package C0904이차배열완전탐색;
import java.util.Arrays;
public class C0904개념03_정렬 {
public static void main(String[] args) {
/*
student 배열은 순서대로 ["번호", "이름", "성별"] 의 데이터 이고,
score 배열은 순서대로 ["번호", "국어", "수학"] 의 데이터이다.
*/
/*
[문제]
학생번호 , 이름 , 점수 두개를 출력하시오.
단, 국어 점수가 높은순으로 내림차순 정렬하시오.
국어 점수가 같으면 수학점수가 높은순으로 내림차순정렬하시오.
[정답]
[1002, 이영희, 70, 30]
[1005, 오만석, 64, 80]
[1004, 이철민, 64, 87]
[1003, 김민정, 64, 65]
[1006, 최이슬, 14, 90]
[1001, 이만수, 10, 20]
*/
String[][] student = {
{"1001", "이만수", "남"},
{"1002", "이영희", "여"},
{"1003", "김민정", "여"},
{"1004", "이철민", "남"},
{"1005", "오만석", "남"},
{"1006", "최이슬", "여"}
};
int[][] score = {
{1001 , 10, 20},
{1002 , 70, 30},
{1003 , 64, 65},
{1004 , 64, 87},
{1005 , 64, 80},
{1006 , 14, 90}
};
/*
위와 같이 배열이 두개가 데이터를 나눠서 가지고있다면,
하나의 새로운 배열에 저장하는것이 좋다.
*/
String[][] viewList = new String[student.length][4];
for(int i = 0; i < student.length; i++){
viewList[i][0] = student[i][0];
viewList[i][1] = student[i][1];
viewList[i][2] = score[i][1] + "";
viewList[i][3] = score[i][2] + "";
}
Arrays.sort(viewList , (a , b)->{
if(a[2].compareTo(b[2]) < 0) {
return 1;
}
else if(a[2].compareTo(b[2]) > 0) {
return -1;
}else {
if(a[1].compareTo(b[3]) < 0) {
return 1;
}
else if(a[1].compareTo(b[3]) > 0) {
return -1;
}else {
return 0;
}
}
});
for(int i = 0; i < viewList.length; i++){
System.out.println(Arrays.toString(viewList[i]));
}
}
}
- 배열_개념16_2차원정렬
package C0904이차배열완전탐색;
import java.util.Arrays;
import java.util.Random;
public class 배열_개념16_2차원정렬 {
public static void main(String[] args) {
int[][] darr = {
{43, 35, 50},
{36, 76, 37},
{98, 25, 19}
};
// 1. 2차원배열의 크기만큼 1차원배열을 생성한다.
int[] arr = new int[9];
// 2. 2차원배열의 값을 생성한 1차원 배열에 저장한다.
int index = 0;
for(int i=0; i<darr.length; i++) {
for(int j=0; j<darr[i].length; j++) {
arr[index] = darr[i][j];
index += 1;
}
}
System.out.println(Arrays.toString(arr));
// 3. 1차원배열 정렬 알고리즘을 사용해 정렬한다.
for(int i=0; i<arr.length; i++) {
int maxNum = arr[i];
int maxIndex = i;
for(int j=i; j<arr.length; j++) {
if(maxNum < arr[j]) {
maxNum = arr[j];
maxIndex = j;
}
}
int temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
System.out.println(Arrays.toString(arr));
// 4. 마지막으로 1차원배열의 값을 2차원 배열에 순차적으로 저장한다.
index = 0;
for(int i=0; i<darr.length; i++) {
for(int j=0; j<darr[i].length; j++) {
darr[i][j] = arr[index];
index += 1;
}
}
// 5. 출력
for(int i=0; i<darr.length; i++) {
System.out.println(Arrays.toString(darr[i]));
}
}
}
- C0905그룹바이
- 집계
- 중복이 안되게 모아야 한다.
- C0905개념01_그룹바이
package C0905그룹바이;
import java.util.Arrays;
public class C0905개념01_그룹바이 {
public static void main(String[] args) {
/*
[문제]
memberList는 회원목록데이터이다.
순서대로 회원번호 , 회원이름 이다.
itemList은 쇼핑몰 판매상품데이터이다.
순서대로 상품번호 , 상품이름 이다.
orderList는 오늘 주문 목록이다.
순서대로 주문한 회원번호, 주문한 상품번호이다.
상품별 판매개수를 출력하시오.
[상품번호, 상품이름 , 판매개수] 를 출력한다.
단, 판매개수가 0인 상품은 출력하지않는다.
단, 판매개수가 높은순으로 내림차순 출력한다.
판매개수가 같으면 번호가낮은순으로 오름차순한다.
[정답]
[100001, 고래밥, 5]
[100002, 새우깡, 2]
[100003, 감자깡, 2]
[100004, 칸쵸, 2]
[100007, 고구마깡, 2]
[100006, 빼빼로, 1]
*/
String[][] memberList = {
{"3001","이만수"},
{"3002","김철민"},
{"3003","이영희"},
{"3004","조성아"},
{"3005","박민재"},
{"3006","유재석"}
};
String[][] itemList = {
{"100001", "고래밥"},
{"100002", "새우깡"},
{"100003", "감자깡"},
{"100004", "칸쵸"},
{"100005", "오징어땅콩"},
{"100006", "빼빼로"},
{"100007", "고구마깡"},
{"100008", "포카칩"}
};
int[][] orderList = {
{3001, 100001},
{3001, 100002},
{3003, 100001},
{3002, 100007},
{3003, 100006},
{3005, 100007},
{3002, 100001},
{3001, 100003},
{3003, 100002},
{3001, 100001},
{3002, 100003},
{3001, 100004},
{3003, 100004},
{3004, 100001}
};
String[][] viewList = new String[itemList.length][3];
//새로운 테이블을 만든다.
for(int i = 0; i < itemList.length; i++){
viewList[i][0] = itemList[i][0];
viewList[i][1] = itemList[i][1];
viewList[i][2] = "0";
}
for(int i = 0; i < viewList.length; i++){
System.out.println(Arrays.toString(viewList[i]));
}
System.out.println();
//완전탐색
for(int i = 0; i < viewList.length; i++){
for(int j = 0; j < orderList.length; j++){
int number = Integer.parseInt(viewList[i][0]);
if(number == orderList[j][1]){
//문자였기 때문에. 형변환 주의
int count = Integer.parseInt(viewList[i][2]);
count += 1;
viewList[i][2] = count + "";
}
}
}
//정렬
Arrays.sort(viewList, (a, b) -> {
if(a[2].compareTo(b[2]) < 0) {
return 1;
} else if(a[2].compareTo(b[2]) > 0) {
return -1;
} else {
if(a[0].compareTo(b[0]) < 0) {
return -1;
} else if(a[0].compareTo(b[0]) > 0) {
return 1;
} else {
return 0;
}
}
});
for(int i = 0; i < viewList.length; i++){
int count = Integer.parseInt(viewList[i][2]);
if(count > 0) {
System.out.println(Arrays.toString(viewList[i]));
}
}
}
}
반응형
'코딩 > 2-JAVA' 카테고리의 다른 글
C0907이차원메모리구조 , C0908행렬 (0) | 2025.06.26 |
---|---|
C0906일차원메모리구조 (1) | 2025.06.26 |
C09이차배열 => C0901이차배열 , C0902이차배열과데이터 (0) | 2025.06.25 |
C0807배열입력심화 (0) | 2025.06.25 |
C0804석차 , C0805그룹바이 , C0806규칙찾기 (0) | 2025.06.24 |