반응형
- C0901이차배열
- C0901개념01_이차배열
package C0807배열입력심화_문제;
import java.util.Scanner;
/*
[문제]
1. 사용자로부터 좌석번호(index)를 입력받아 예매하는 시스템이다.
2. 예매가 완료되면 해당 좌석 값을 1로 변경한다.
3. 이미 예매가 완료된 좌석은 재구매할 수 없다.
4. 한 좌석당 에매 가격은 12000원이다.
5. 프로그램 종료 후, 해당 영화관의 총 매출 금액을 출력한다.
[예시]
seat = 0 0 0 0 0 0 0
좌석선택 : 1
seat = 0 1 0 0 0 0 0
좌석선택 : 3
seat = 0 1 0 1 0 0 0
좌석선택 : 3
seat = 0 1 0 1 0 0 0
이미 예매가 완료된 자리입니다.
-------------------------
총 금액 : 24000원
*/
public class C0807문제04 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] seat = new int[7];
boolean run = true;
while(run) {
System.out.println("== 영화관 ==");
System.out.println("1.좌석예매");
System.out.println("2.구매");
System.out.print("메뉴 선택 : ");
int sel = scan.nextInt();
if(sel == 1) {
for(int i = 0; i < 7; i++) {
System.out.print(seat[i] + " ");
}
System.out.println();
System.out.println("예매할 좌석을 입력하세요.");
// 이후 알아서 만들기
}
else if(sel == 2) {
System.out.println("정산후종료.");
run = false;
}
}
scan.close();
}
}
- C0901개념02_값수정
- 자바는 배열을 int로 만들면 전부 0이 들어가 있다.
- int [ ] [ ] darr = new int [ 3 ] [ 3 ];

package C0901이차배열;
import java.util.Arrays;
public class C0901개념02_값수정 {
public static void main(String[] args) {
/*
[문제]
arr배열에 1~9를 순차적으로 저장하고 출력하시오.
[정답]
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
*/
int[][] darr = new int[3][3];
int num = 1;
for(int i=0; i<darr.length; i++) {
for(int j=0; j<darr[i].length; j++) {
darr[i][j] = num;
num += 1;
}
}
for(int i = 0; i < darr.length; i++) {
System.out.println(Arrays.toString(darr[i]));
}
}
}
- C0901개념03_인덱스두개
- 2차배열은 인덱스가 2개이다.
package C0901이차배열;
import java.util.Arrays;
import java.util.Random;
public class C0901개념03_인덱스두개 {
public static void main(String[] args) {
/*
[문제]
darr배열에 10~90까지 값을 저장 후
랜덤으로 값 하나를 출력하시오.
[예시]
darr : [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
r1 : 1 r2 : 0
40
*/
Random ran = new Random();
int[][] darr = new int[3][3];
int num = 1;
for(int i=0; i<darr.length; i++) {
for(int j=0; j<darr[i].length; j++) {
darr[i][j] = num;
num += 1;
}
}
for(int i = 0; i < darr.length; i++) {
System.out.println(Arrays.toString(darr[i]));
}
int r1 = ran.nextInt(3);
int r2 = ran.nextInt(3);
System.out.println(darr[r1][r2]);
}
}
- C0901개념04_미리값넣기
package C0901이차배열;
import java.util.Arrays;
import java.util.Random;
public class C0901개념04_미리값넣기 {
public static void main(String[] args) {
/*
아래와같이 이차원으로미리 값을 넣어둘수있다. 자동으로 new[3][3] 이된것이다.
*/
int[][] darr = {
{1,2,3},
{4,5,6},
{5,6,7}
};
for(int i = 0; i < darr.length; i++) {
System.out.println(Arrays.toString(darr[i]));
}
}
}
- C0901개념05_대괄호위치
package C0901이차배열;
import java.util.Arrays;
import java.util.Random;
public class C0901개념05_대괄호위치 {
public static void main(String[] args) {
/*
아래와같이 [][] 의 위치는 앞에 붙여도되고, 뒤에 붙여도된다.
*/
int[][] arr = new int[3][3]; //원형
int arr2[][] = new int[3][3];
}
}
- C0901이차배열_문제
- C0901문제01
package C0901이차배열_문제;
import java.util.Arrays;
import java.util.Random;
public class C0901문제01 {
public static void main(String[] args) {
/*
[문제]
darr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고,
랜덤값(1~100)을 9개 저장하시오.
[예시]
[56, 64, 10]
[100, 40, 12]
[9, 70, 29]
*/
Random ran = new Random();
int[][] darr = new int[3][3];
for(int i = 0; i<darr.length; i++) {
for(int j = 0; j<darr[i].length; j++) {
int a = ran.nextInt(100)+1;
darr[i][j] = a;
//이 한 줄이 총 9번 실행됨
//실제 데이터를 넣는 동작. 이게 핵심!
}
}
for(int i = 0; i<darr.length; i++) {
System.out.println(Arrays.toString(darr[i]));
}
}
}
- C0901문제02
package C0901이차배열_문제;
import java.util.Arrays;
import java.util.Random;
public class C0901문제02 {
public static void main(String[] args) {
/*
[문제]
darr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고,
랜덤값(1~100)을 9개 저장하시오.
arr배열의 값 중에서 50이상을 전부 출력하시오.
[예시]
[42, 60, 31]
[42, 73, 84]
[83, 29, 23]
60
73
84
83
*/
Random ran = new Random();
int [][]darr = new int [3][3];
for(int i = 0; i<darr.length; i++) {
for(int j = 0; j<darr[i].length; j++) {
//j<darr[j].length; => 길이로 하면 안되나?
//darr[i][j] 그냥 값 1개?
//darr[j] = 없는 말
int a = ran.nextInt(100)+1;
darr[i][j] = a;
}
}
for(int i = 0; i<darr.length; i++) {
System.out.println(Arrays.toString(darr[i]));
//i만 출력하면. 이 i는 세로를 의미하나??
}
for(int i = 0; i<darr.length; i++) {
for(int j = 0; j<darr[i].length; j++) {
if(darr[i][j] >= 50) {
System.out.println(darr[i][j]);
//개별 출력
//셀프탐색인가??
//그냥 단순 탐색
}
}
}
}
}
/*
* int [] arr = {10, 20, 30};
* 3바퀴
* for(int i = 0; i < arr.length;i++){} // 3바퀴 =>단순
*
*
* 9바퀴 => 셀프탐색
* for(int i = 0; i < arr.length;i++){
* for(int j = 0; j < arr.length; j++){
* }
* }
*
* 9바퀴 => 보통탐색
* int [] arr2 = {40, 50, 60};
* for(int i = 0; i < arr.length;i++){
* for(int j = 0; j < arr2.length; j++){
* }
* }
*
* int[][] = ar[3][3]; // 자기가 9개야 9바퀴 => 단순탐색
*
*
*/
// 단순탐색
// 셀프탐색
// 보통탐색
//셀프탐색
//1차배열이 자기를 자신을 검사할때.
//보통탐색
//1차배열이 다른 1차배열을 검사할떄.
//2차배열
//for for 단순검색
- C0901문제03
package C0901이차배열_문제;
import java.util.Arrays;
import java.util.Random;
public class C0901문제03 {
public static void main(String[] args) {
/*
[문제]
arr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고,
랜덤값(1~100)을 9개 저장하시오.
arr배열의 값 중에서 4의 배수만 출력하시오.
[예시]
[20, 5, 41]
[2, 69, 45]
[9, 38, 88]
20
88
*/
Random ran = new Random();
int [][] arr = new int[3][3];
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
int a = ran.nextInt(100)+1;
arr[i][j] = a;
}
}
for(int i = 0; i<arr.length; i++) {
System.out.println(Arrays.toString(arr[i]));
}
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
if(arr[i][j]%4 == 0) {
System.out.println(arr[i][j]);
}
}
}
}
}
- C0901문제04
package C0901이차배열_문제;
import java.util.Arrays;
import java.util.Random;
public class C0901문제04 {
public static void main(String[] args) {
/*
[문제]
arr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고,
랜덤값(1~100)을 9개 저장하시오.
arr배열의 값 중에서 50이상인 수의 합을 출력하시오.
[예시]
[5, 32, 10]
[24, 55, 76]
[36, 64, 48]
195
*/
Random ran = new Random();
int [][] arr = new int [3][3];
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
int a = ran.nextInt(100)+1;
arr[i][j] = a;
}
}
for(int i = 0; i<arr.length; i++) {
System.out.println(Arrays.toString(arr[i]));
}
int total = 0;
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
if(arr[i][j] >= 50) {
total += arr[i][j];
}
}
}
System.out.println(total);
}
}
- C0901문제05
package C0901이차배열_문제;
import java.util.Arrays;
import java.util.Random;
public class C0901문제05 {
public static void main(String[] args) {
/*
[문제]
arr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고,
랜덤값(1~100)을 9개 저장하시오.
arr배열의 값 중에서 50이상인 수의 개수를 출력하시오.
[예시]
[63, 69, 17]
[73, 69, 38]
[55, 57, 14]
6
*/
Random ran = new Random();
int [][] arr = new int [3][3];
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
int a = ran.nextInt(100)+1;
arr[i][j] = a;
}
}
for(int i = 0; i<arr.length; i++) {
//System.out.println(arr[i]); =>왜 안되지?
System.out.println(Arrays.toString(arr[i]));
}
//----------------------------------------------
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
//------------------------------------
int count = 0;
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
if(arr[i][j]>= 50) {
count += 1;
}
}
}
System.out.println();
}
}
- C0901문제07
package C0901이차배열_문제;
import java.util.Arrays;
import java.util.Random;
public class C0901문제07 {
public static void main(String[] args) {
/*
[문제]
[1] arr배열에 랜덤 값(1~100)을 9개 저장 후 출력하시오.
[2] 그 중에 가장 큰 값을 출력하시오.
[예시]
[25, 11, 1]
[67, 12, 96]
[8, 17, 86]
------
96
*/
Random ran = new Random();
int[][] darr = new int[3][3];
for(int i = 0; i<darr.length; i++) {
for(int j = 0; j<darr[i].length; j++) {
int a = ran.nextInt(100)+1;
darr[i][j] = a;
}
}
for(int i = 0; i<darr.length;i++) {
System.out.println(Arrays.toString(darr[i]));
}
System.out.println("---------");
int max = darr[0][0];
for(int i = 0; i<darr.length; i++) {
for(int j = 0; j<darr[i].length; j++) {
if(max < darr[i][j]) {
max = darr[i][j];
}
}
}
System.out.println(max);
}
}
- C0901문제08
package C0901이차배열_문제;
import java.util.Arrays;
import java.util.Random;
public class C0901문제08 {
public static void main(String[] args) {
/*
[문제]
apt배열은 아파트 1동의 각 세대를 의미한다.
pay배열은 이번달 관리비를 뜻한다.
아래 문제를 잘 읽고 정답을 구하시오.
*/
int[][] apt = {
{101, 102, 103},
{201, 202, 203},
{301, 302, 303}
};
int[][] pay = {
{1000, 2100, 1300},
{4100, 2000, 1000},
{3000, 1600, 800}
};
/*
[문제 1]
각 층별 관리비 합을 출력하시오.
[정답 1]
4400 7100 5400
*/
for(int i = 0; i<pay.length; i++) {
int total = 0;
for(int j = 0; j<pay[i].length; j++) {
total += pay[i][j];
}
System.out.println(total);
}
}
}
- C0902이차배열과데이터
- C0902개념01_시험점수_총합
package C0902이차배열과데이터;
public class C0902개념01_시험점수_총합 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
//2차배열이 필요한 이유는. 데이터 때문
int[][] student = {
{1001, 100, 20, 32}, // 152
{1002, 40, 43, 12}, // 95
{1003, 60, 21, 42}, // 123
{1004, 76, 54, 55}, // 185
{1005, 23, 11, 76} // 110
};
/*
[문제]
모든 점수의 총합을 출력하시오.
[정답]
665
*/
int total = 0;
for(int i=0; i<student.length; i++) {
for(int j = 1; j<student[i].length; j++) {
//int j = 1 => 번호는 하면 안되니까.
total += student[i][j];
}
}
System.out.println(total);
}
}
- C0902개념02_시험점수_추가
package C0902이차배열과데이터;
import java.util.Arrays;
public class C0902개념02_시험점수_추가 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
마지막 자리는 0으로 비어있다.
*/
//자바는 push가 안된다.
//0이라는 공간을 만들어서 여기다가 집어 넣는다.
int[][] student = {
{1001, 100, 20, 32 ,0}, // 152
{1002, 40, 43, 12 ,0}, // 95
{1003, 60, 21, 42 ,0}, // 123
{1004, 76, 54, 55 ,0}, // 185
{1005, 23, 11, 76 ,0} // 110
};
/*
[문제]
각 학생별 점수 총합을 인덱스4자리에 추가하시오.
[정답]
[1001, 100, 20, 32, 152]
[1002, 40, 43, 12, 95]
[1003, 60, 21, 42, 123]
[1004, 76, 54, 55, 185]
[1005, 23, 11, 76, 110]
*/
for(int i=0; i<student.length; i++) {
int total = student[i][1] + student[i][2] + student[i][3];
student[i][4] = total;
}
for(int i = 0; i < student.length; i++){
System.out.println(Arrays.toString(student[i]));
}
}
}
- C0902개념03_시험점수_순위추가
package C0902이차배열과데이터;
import java.util.Arrays;
public class C0902개념03_시험점수_순위추가 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
마지막 두자리는 총합과 순위의 자리이다.
*/
int[][] student = {
{1001, 100, 20, 32 ,0 ,0}, // 152
{1002, 40, 43, 12 ,0 ,0}, // 95
{1003, 60, 21, 42 ,0 ,0}, // 123
{1004, 76, 54, 55 ,0 ,0}, // 185
{1005, 23, 11, 76 ,0 ,0} // 110
};
/*
[문제]
각 학생별 점수 총합을 인덱스4자리에 추가하시오.
총합을 비교하여 랭크를 인덱스5자리에 추가하시오.
[정답]
[1001, 100, 20, 32, 152, 2]
[1002, 40, 43, 12, 95, 5]
[1003, 60, 21, 42, 123, 3]
[1004, 76, 54, 55, 185, 1]
[1005, 23, 11, 76, 110, 4]
*/
for(int i=0; i<student.length; i++) {
int total = student[i][1] + student[i][2] + student[i][3];
student[i][4] = total;
}
for(int i = 0; i<student.length; i++) {
int count = 1;
for(int j = 0; j < student.length; j++) {
if(student[i][4] < student[j][4]) {
count += 1;
}
}
student[i][5] = count;
}
for(int i = 0; i < student.length; i++){
System.out.println(Arrays.toString(student[i]));
}
}
//dense rank로도 만들어 보시오.
}
- C0902이차배열과데이터_문제
- C0902문제01
package C0902이차배열과데이터_문제;
public class C0902문제01 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
int[][] student = {
{1001, 100, 20, 32}, // 152
{1002, 40, 43, 12}, // 95
{1003, 60, 21, 42}, // 123
{1004, 76, 54, 55}, // 185
{1005, 23, 11, 76} // 110
};
/*
[문제]
국어 1등 번호를 출력하시오.
[정답]
1001
*/
int maxScore = 0;
int maxIndex = 0;
for(int i = 0; i<student.length; i++) {
if(maxScore < student[i][1]) {
maxScore = student[i][1];
maxIndex = i;
}
}
System.out.println(student[maxIndex][0]);
}
}
- C0902문제02
package C0902이차배열과데이터_문제;
public class C0902문제02 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
int[][] student = {
{1001, 100, 20, 32}, // 152
{1002, 40, 43, 12}, // 95
{1003, 60, 21, 42}, // 123
{1004, 76, 54, 55}, // 185
{1005, 23, 11, 76} // 110
};
/*
[문제]
전체 1등 번호를 출력하시오.
[정답]
1004
*/
int maxScore = 0;
int maxIndex = 0;
for(int i = 0; i<student.length; i++) {
int total = student[i][1] + student[i][2] + student[i][3];
if(maxScore < total ) { //현재까지 가장 높은 점수인지 확인해서, 그렇다면 갱신한다
maxScore = total;
maxIndex = i;
}
}
System.out.println(student[maxIndex][0]);
}
}
- C0902문제03
package C0902이차배열과데이터_문제;
public class C0902문제03 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
int[][] student = {
{1001, 100, 20, 32}, // 152
{1002, 40, 43, 12}, // 95
{1003, 60, 21, 42}, // 123
{1004, 76, 54, 55}, // 185
{1005, 23, 11, 76} // 110
};
/*
[문제]
수학점수가 국어점수 보다 높은 번호를 출력하시오.
[정답]
1002
*/
for(int i = 0; i<student.length; i++) {
if(student[i][1] < student[i][2]) {
System.out.println(student[i][0]);
}
}
}
}
- C0902문제04
package C0902이차배열과데이터_문제;
import java.util.Arrays;
public class C0902문제04 {
public static void main(String[] args) {
/*
student배열은 이번 학기 중간고사 성적이다.
가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
각각 국어, 수학, 영어 점수이다.
*/
int[][] student = {
{1001, 100, 20, 32}, // 152
{1002, 40, 43, 12}, // 95
{1003, 60, 21, 42}, // 123
{1004, 76, 54, 55}, // 185
{1005, 23, 11, 76} // 110
};
/*
[문제]
각각 점수별총합을 아래 total배열에 추가하시오.
순서대로 국어 , 수학 , 영어 점수이다.
[정답]
299,149,217
*/
int[] total = {0,0,0};
for(int i = 0; i<student.length; i++) {
total[0] += student[i][1];
total[1] += student[i][2];
total[2] += student[i][3];
}
System.out.println(Arrays.toString(total));
}
}
반응형
'코딩 > 2-JAVA' 카테고리의 다른 글
| C0906일차원메모리구조 (2) | 2025.06.26 |
|---|---|
| C0903정렬 , C0904이차배열완전탐색 , C0905그룹바이 (3) | 2025.06.25 |
| C0807배열입력심화 (0) | 2025.06.25 |
| C0804석차 , C0805그룹바이 , C0806규칙찾기 (0) | 2025.06.24 |
| C0801보통완전탐색 , C0802보통완전탐색데이터 , C0803중복해결 (3) | 2025.06.24 |