코딩/2-JAVA

C0910이차배열입력

tree0505 2025. 6. 27. 10:21
반응형
  • C0910이차배열입력

  • C0910개념01이차배열입력
    • 2차배열인데. 입력을 넣은것 
package C0910이차배열입력;

import java.util.Arrays;
import java.util.Scanner;

public class C0910개념01이차배열입력 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		int[][] arr = new int[3][3];
		
		int k = 1;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				arr[i][j] = 10 * k;
				k += 1;
			}
		}
		//---------------------------------------------
		for(int i = 0; i < 3; i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		
		// [문제1] 인덱스 2개를 입력받아 값 출력
		// 예1) 인덱스1 입력 : 1	인덱스2 입력 : 2
		//	    값 출력 : 60 
		System.out.print("인덱스1 입력 : ");
		int index1 = scan.nextInt();
		System.out.print("인덱스2 입력 : ");
		int index2 = scan.nextInt();
		System.out.println(arr[index1][index2]);
		

		// [문제2] 값을 입력받아 인덱스 2개 출력
		// 예2) 값 입력 : 60
		//	    인덱스1 출력 : 1	인덱스2 출력 : 2
		System.out.print("값 입력 : ");
		int value = scan.nextInt();
		
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(value == arr[i][j]) {
					System.out.println("인덱스1 : " + i + ", 인덱스2 : " + j);
				}
			}
		}
				
		// [문제3] 가장 큰 값의 인덱스 2개 출력
		// [정답3] 2 2
		int maxNum = 0;
		int maxIndexI = 0;
		int maxIndexJ = 0;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(maxNum < arr[i][j]) {
					maxNum = arr[i][j];
					
					maxIndexI = i;
					maxIndexJ = j;
				}
			}
		}
		System.out.println(maxIndexI + " " + maxIndexJ);
		
		// [문제4] 값 2개를 입력받아 값 교체
		System.out.print("갑1 입력 : ");
		int value1 = scan.nextInt();
		System.out.print("값2 입력 : ");
		int value2 = scan.nextInt();
		
		int i1 = 0;
		int j1 = 0;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(value1 == arr[i][j]) {
					i1 = i;
					j1 = j;
				}
			}
		}
		
		int i2 = 0;
		int j2 = 0;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(value2 == arr[i][j]) {
					i2 = i;
					j2 = j;
				}
			}
		}
		
		int temp = arr[i1][j1];
		arr[i1][j1] = arr[i2][j2];
		arr[i2][j2] = temp;
		for(int i=0; i<3; i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		
		scan.close();
		
	}
}

  • C0910이차배열입력_개념연습

  • C0910개념연습01
package C0910이차배열입력_개념연습;

import java.util.Arrays;
import java.util.Scanner;

public class C0910개념연습01 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		int[][] arr = new int[3][3];
		
		int k = 1;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				arr[i][j] = 10 * k;
				k += 1;
			}
		}
		for(int i = 0; i < 3; i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		
		// [문제1] 인덱스 2개를 입력받아 값 출력
		// 예1) 인덱스1 입력 : 1	인덱스2 입력 : 2
		//	    값 출력 : 60 
		System.out.print("인덱스1 입력 : ");
		int index1 = scan.nextInt();
		System.out.print("인덱스2 입력 : ");
		int index2 = scan.nextInt();
		System.out.println(arr[index1][index2]);
		

		// [문제2] 값을 입력받아 인덱스 2개 출력
		// 예2) 값 입력 : 60
		//	    인덱스1 출력 : 1	인덱스2 출력 : 2
		System.out.print("값 입력 : ");
		int value = scan.nextInt();
		
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(value == arr[i][j]) {
					System.out.println("인덱스1 : " + i + ", 인덱스2 : " + j);
				}
			}
		}
				
		// [문제3] 가장 큰 값의 인덱스 2개 출력
		// [정답3] 2 2
		int maxNum = 0;
		int maxIndexI = 0;
		int maxIndexJ = 0;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(maxNum < arr[i][j]) {
					maxNum = arr[i][j];
					
					maxIndexI = i;
					maxIndexJ = j;
				}
			}
		}
		System.out.println(maxIndexI + " " + maxIndexJ);
		
		// [문제4] 값 2개를 입력받아 값 교체
		System.out.print("갑1 입력 : ");
		int value1 = scan.nextInt();
		System.out.print("값2 입력 : ");
		int value2 = scan.nextInt();
		
		int i1 = 0;
		int j1 = 0;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(value1 == arr[i][j]) {
					i1 = i;
					j1 = j;
				}
			}
		}
		
		int i2 = 0;
		int j2 = 0;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(value2 == arr[i][j]) {
					i2 = i;
					j2 = j;
				}
			}
		}
		
		int temp = arr[i1][j1];
		arr[i1][j1] = arr[i2][j2];
		arr[i2][j2] = temp;
		for(int i=0; i<3; i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		
		scan.close();
		
	}
}

  • C0910개념연습02
package C0910이차배열입력_개념연습;

import java.util.Arrays;
import java.util.Scanner;

public class C0910개념연습02 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);

		//               번호,   id,  pw
		int[] test1 = { 1001, 1234, 1111 };
		int[] test2 = { 1002, 2345, 2222 };
		int[] test3 = { 1003, 3456, 3333 };
		int[] test4 = { 1004, 4567, 4444 };

		int[][] memberList = new int[100][3]; // 최대100명 데이터는3

		int count = 0;
		int lastNumber = 1000;

		memberList[count] = test1;
		lastNumber += 1;
		count += 1;

		memberList[count] = test2;
		lastNumber += 1;
		count += 1;

		memberList[count] = test3;
		lastNumber += 1;
		count += 1;

		memberList[count] = test4;
		lastNumber += 1;
		count += 1;
		
		
		while (true) {
			for(int i=0; i<count; i++) {
				System.out.println(Arrays.toString(memberList[i]));
			}
			
			System.out.println("[회원관리]");
			System.out.println("[1] 추가 [2] 삭제 [3] 수정 [4] 검색 [5] 출력 [0] 종료");

			int sel = scan.nextInt();
			if (sel == 0) {
				break;
			} else if (sel == 1) {
				
				System.out.print("[추가]아이디 입력 : ");
				int id = scan.nextInt();

				// 아이디 중복검사
				int index = -1;
				for (int i = 0; i < count; i++) {
					if(memberList[i][1] == id) {
						index = i;
						break;
					}
				}

				if (index == -1) {
					System.out.print("[추가]비밀번호 입력 : ");
					int pw = scan.nextInt();

					int[] data = new int[3];
					lastNumber += 1;
					data[0] = lastNumber; 
					data[1] = id;
					data[2] = pw;
					memberList[count] = data;

					count += 1;
				} else {
					System.out.println("중복 아이디입니다. ");
				}
			} else if (sel == 2) {
				System.out.print("[삭제]아이디 입력 : ");
				int id = scan.nextInt();

				// 아이디 유효성검사
				int index = -1;
				for (int i = 0; i < count; i++) {
					if(memberList[i][1] == id) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.println("아이디를 확인해주세요.");
				} else {
					for(int i=index; i<count-1; i++) {
						memberList[i] = memberList[i + 1];
//						memberList[i][0] = memberList[i + 1][0];
//						memberList[i][1] = memberList[i + 1][1];
//						memberList[i][2] = memberList[i + 1][2];
					}
					count -= 1;
				}
			} else if (sel == 3) {
				System.out.print("[수정]아이디 입력 : ");
				int id = scan.nextInt();

				// 아이디 유효성검사
				int index = -1;
				for (int i = 0; i < count; i++) {
					if(memberList[i][1] == id) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.println("아이디를 확인해주세요.");
				} else {
					System.out.print("[수정]변경할 비밀번호 입력 : ");
					int newPw = scan.nextInt();
					
					memberList[index][2] = newPw;
				}
			} else if (sel == 4) {
				System.out.print("[검색]아이디 입력 : ");
				int id = scan.nextInt();

				// 아이디 유효성검사
				int index = -1;
				for (int i = 0; i < count; i++) {
					if(memberList[i][1] == id) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.println("아이디를 확인해주세요.");
				} else {
					System.out.println("NO : " + memberList[index][0]);
					System.out.println("ID : " + memberList[index][1]);
					System.out.println("PW : " + memberList[index][2]);
				}
			} else if (sel == 5) {
				for(int i=0; i<count; i++) {
					System.out.printf("No : %d\tID : %d\tPW : %d\n", memberList[i][0], memberList[i][1], memberList[i][2]);
				}
				System.out.println();
			}
		}

		scan.close();
		
	}
}

  • C0910개념연습03
package C0910이차배열입력_개념연습;

import java.util.Random;
import java.util.Scanner;

/*
	[문제]
		1. 1부터 50사이의 랜덤 숫자 25개를 중복없이 bingo에 저장한다.
		2. 행과 열을 입력받아 숫자를 선택한다.
		3. 가로, 세로, 대각선으로 한 줄을 선택하면, 빙고로 게임은 종료된다.
*/

public class C0910개념연습03 {
	public static void main(String[] args) {
	
		Scanner scan = new Scanner(System.in);
		Random ran = new Random();
		
		int maxNum = 5;
		
		int[][] bingo = new int[maxNum][maxNum];
		int[][] mark = new int[maxNum][maxNum];
		
		boolean win = false;
		
		// 1부터 50사이의 숫자 25개를 중복없이 bingo배열에 저장
		int[] temp = new int[maxNum * maxNum];
		for(int i=0; i<temp.length; i++) {
			int r = ran.nextInt(50) + 1;
			
			boolean check = false;
			for(int j=0; j<i; j++) {
				if(r == temp[j]) {
					check = true;
					break;
				}
			}
			
			if(check == false) {
				temp[i] = r;
			} else {
				i -= 1;
			}
		}
		
		int index = 0;
		for(int i=0; i<maxNum; i++) {
			for(int j=0; j<maxNum; j++) {
				bingo[i][j] = temp[index];
				index += 1;
			}
		}
		
		// 게임 시작
		while(true) {
			// 화면 출력
			for(int i=0; i<maxNum; i++) {
				for(int j=0; j<maxNum; j++) {
					if(mark[i][j] == 1) {
						System.err.printf("[%2d]", bingo[i][j]);
					} else {
						System.out.printf("[%2d]", bingo[i][j]);
					}
				}
				System.out.println();
			}
			System.out.println();
			
			// 게임 종료
			if(win) {
				System.out.println("빙고!");
				break;
			}
			
			// 위치 선택
			System.out.print("인덱스1 입력 : ");
			int y = scan.nextInt();
			System.out.print("인덱스2 입력 : ");
			int x = scan.nextInt();
			
			if(mark[y][x] == 0) {
				mark[y][x] = 1;
			}
			
			// 가로 검사
			for(int i=0; i<maxNum; i++) {
				int count = 0;
				for(int j=0; j<maxNum; j++) {
					if(mark[i][j] == 1) {
						count += 1;
					}
				}
				if(count == maxNum) {
					win = true;
				}
			}
			
			// 세로 검사
			for(int i=0; i<maxNum; i++) {
				int count = 0;
				for(int j=0; j<maxNum; j++) {
					if(mark[j][i] == 1) {
						count += 1;
					}
				}
				if(count == maxNum) {
					win = true;
				}
			}
			
			// 대각선 \ 검사
			int count = 0;
			for(int i=0; i<maxNum; i++) {
				if(mark[i][i] == 1) {
					count += 1;
				}
			}
			if(count == maxNum) {
				win = true;
			}
			
			// 대각선 / 검사
			count = 0;
			for(int i=0; i<maxNum; i++) {
				if(mark[i][maxNum - 1 - i] == 1) {
					count += 1;
				}
			}
			if(count == maxNum) {
				win = true;
			}
			
		}
		
		scan.close();
		
	}
}

  • C0910개념연습04
package C0910이차배열입력_개념연습;

import java.util.Scanner;

/*
	[문제]
		아래 명령어를 선택할 때마다
		block 배열을 90도 회전시키시오.
		[1.left_turn] [2.right_turn]
	[예시]
		입력 : 1
		
		4 8 12 16
		3 7 11 15
		2 6 10 14
		1 5 9  13
*/


public class C0910개념연습04 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		
		int[][] block = {
			{ 1,  2,  3,  4},
			{ 5,  6,  7,  8},
			{ 9, 10, 11, 12},
			{13, 14, 15, 16},
		};
		
		while(true) {
			for(int i=0; i<block.length; i++) {
				for(int j=0; j<block[i].length; j++) {
					System.out.printf("[%2d]", block[i][j]);
				}
				System.out.println();
			}
			
			System.out.println("[1.left_turn] [2.right_turn]");
			int choice = scan.nextInt();
			
			if(choice == 1) {
				int[][] temp = new int[4][4];
				for(int i=0; i<4; i++) {
					for(int j=0; j<4; j++) {
						temp[j][i] = block[i][3-j];
					}
				}
				for(int i=0; i<4; i++) {
					for(int j=0; j<4; j++) {
						block[i][j] = temp[i][j];
					}
				}
			} else if(choice == 2) {
				int[][] temp = new int[4][4];
				for(int i=0; i<4; i++) {
					for(int j=0; j<4; j++) {
						temp[j][3-i] = block[i][j];
					}
				}
				for(int i=0; i<4; i++) {
					for(int j=0; j<4; j++) {
						block[i][j] = temp[i][j];
					}
				}
			}
		}
		
	}
}

  • C0910개념연습05
package C0910이차배열입력_개념연습;

import java.util.Scanner;

/*
	[문제]
		아래 그림을 참고해 배열을 생성하한다.
		2인용 게임으로 서로 번갈아가며 주사위를 던진다.(입력받거나 랜덤으로)
		주사위의 숫자만큼 이동하여, 3바퀴를 먼저 돌면 
		승리하는 게임이다.
		단, 이동할 때 외곽으로만 이동할 수 있다.
	
		p1 = 0[0바퀴]
		p2 = 0[0바퀴]
		*    □    □    □    □ 
		□    ■    ■    ■    □ 
		□    ■    ■    ■    □ 
		□    ■    ■    ■    □ 
		□    □    □    □    □ 
		
		[p1]차례 주사위 입력(1 ~ 6) : 3
		p1 = 3[0바퀴]
		p2 = 0[0바퀴]
		홋    □    □    솟    □ 
		□    ■    ■    ■    □ 
		□    ■    ■    ■    □ 
		□    ■    ■    ■    □ 
		□    □    □    □    □ 
		
		[p2]차례 주사위 입력(1 ~ 6) : 5
		p1 = 3[0바퀴]
		p2 = 5[0바퀴]
		□    □    □    솟    □ 
		□    ■    ■    ■    홋 
		□    ■    ■    ■    □ 
		□    ■    ■    ■    □ 
		□    □    □    □    □ 
		
		[p1]차례 주사위 입력(1 ~ 6) : 2
		p1 = 5[0바퀴]
		p2 = 5[0바퀴]
		□    □    □    □    □ 
		□    ■    ■    ■    * 
		□    ■    ■    ■    □ 
		□    ■    ■    ■    □ 
		□    □    □    □    □ 
		
		[p2]차례 주사위 입력(1 ~ 6) : 3
		p1 = 5[0바퀴]
		p2 = 8[0바퀴]
		□    □    □    □    □ 
		□    ■    ■    ■    솟 
		□    ■    ■    ■    □ 
		□    ■    ■    ■    □ 
		□    □    □    □    홋
*/

public class C0910개념연습05 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		int[][] map = {
			{ 1,  2,  3,  4, 5},
			{16, 17, 17, 17, 6},
			{15, 17, 17, 17, 7},
			{14, 17, 17, 17, 8},
			{13, 12, 11, 10, 9}
		};
		
		int p1 = 1;		// 솟
		int p2 = 1;		// 홋
		
		int win1 = 0;
		int win2 = 0;
		
		boolean turn = true;
		while(true) {
			System.out.println("p1 = " + p1 + "[" + win1 + "바퀴]");
			System.out.println("p2 = " + p2 + "[" + win2 + "바퀴]");
			for(int i=0; i<5; i++) {
				for(int j=0; j<5; j++) {
					if(map[i][j] == 17) {
						System.out.print(" ■ ");
					} else {
						if(map[i][j] == p1 && map[i][j] == p2) {
							System.out.print(" * ");
						} else if(map[i][j] == p1) {
							System.out.print(" 솟 ");
						} else if(map[i][j] == p2) {
							System.out.print(" 홋 ");
						} else {
							System.out.print(" □ ");
						}
					}
				}
				System.out.println();
			}
			System.out.println();
			
			if(win1 == 3) {
				System.out.print("[p1]승리");
				break;
			}
			if(win2 == 3) {
				System.out.println("[p2]승리");
				break;
			}
			
			if(turn) {
				System.out.print("[p1]차례 주사위 입력(1 ~ 6) : ");
				int move = scan.nextInt();
				p1 += move;
				if(p1 > 16) {
					win1 += 1;
					p1 %= 16;
				}
			} else {
				System.out.print("[p2]차례 주사위 입력(1 ~ 6) : ");
				int move = scan.nextInt();
				p2 += move;
				if(p2 > 16) {
					win2 += 1;
					p2 %= 16;
				}
			}
			
			turn = !turn;
		}
		
	}
}

  • C0910개념연습06
package C0910이차배열입력_개념연습;

import java.util.Scanner;

/*
	[문제]
		1. 10x10 배열을 생성한다.
		2. 스네이크는 1234로 표시한다.
		3. 머리는 상하좌우로 이동이 가능하며, 꼬리가 따라온다.
		4. 자기 몸하고 부딪히면, 사망한다.
		5. 랜덤으로 아이템을 생성해
		   아이템을 먹으면 꼬리가 1개 자란다.
		6. 꼬리는 최대 8개까지 증가할 수 있다.
 */

public class C0910개념연습06 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		int[][] map = new int[10][10];
		
		int snakeSize = 4;
		int[] y = new int[snakeSize];
		int[] x = new int[snakeSize];
		
		for(int i=0; i<snakeSize; i++) {
			x[i] = i;
			map[y[i]][x[i]] = i + 1;
		}
		
		while(true) {
			for(int i=0; i<10; i++) {
				for(int j=0; j<10; j++) {
					System.out.print(map[i][j] + " ");
				}
				System.out.println();
			}
			
			System.out.println("     ↑(5)");
			System.out.println("←(1) ↓(2) →(3)");
			int move = scan.nextInt();
			
			int tempY = y[0];
			int tempX = x[0];
			
			if(move == 1) { tempX -= 1; }
			else if(move == 2) { tempY += 1; }
			else if(move == 3) { tempX += 1; }
			else if(move == 5) { tempY -= 1; }
			
			if(10 <= tempY || tempY < 0) continue;
			if(10 <= tempX || tempX < 0) continue;
			if(map[tempY][tempX] != 0) continue;
			
			for(int i=0; i<snakeSize; i++) {
				map[y[i]][x[i]] = 0;
			}
			
			for(int i=snakeSize - 1; i>0; i--) {
				y[i] = y[i - 1];
				x[i] = x[i - 1];
			}
			y[0] = tempY;
			x[0] = tempX;
			
			for(int i=0; i<snakeSize; i++) {
				map[y[i]][x[i]] = i + 1;
			}
		}
	}
}

 

 

COS Pro 2급 Python 모의고사

COS Pro (Professional Coding Specialist)란? 프로그램 설계 및 이해, 프로그램 구현, 프로그램 검사 및 수정 능력을 검정하는 자격증입니다. COS Pro로 본인의 프로그래밍 활용능력이 어느 정도인지를 증명

school.programmers.co.kr

  • 자바 어느정도 풀 수 있으니까. 풀 수 있다. 

  • 수업파일에 있음. 자바 
  • C26코스프로2급샘플

 

반응형