0901

호두·2022년 9월 2일
0

공부

목록 보기
14/25

CODE

/*
 * 방의 갯수를 입력받아 방을 만들고, 그 방을 관리하는 프로그램
 * 방의 갯수: 3
 * 1.입실 2.퇴실 3.보기 4.종료 : 1
 * 입실하실 방의 번호: 1
 * 1호실에 입실하셨습니다
 * 1.입실 2.퇴실 3.보기 4.종료 : 1
 * 입실하실 방의 번호: 1
 * 1호실은 사용중 입니다.
 * 1.입실 2.퇴실 3.보기 4.종료 : 2
 * 퇴실하실 방의 번호: 2
 * 2호실은 빈방입니다.
 * 1.입실 2.퇴실 3.보기 4.종료: 3
 * 1호실 - 사용중
 * 2호실 - 빈방
 * 3호실 - 빈방
 * 1.입실 2.퇴실 3.보이 4.종료: 2
 * 퇴실하실 방의 번호: 1
 * 1호실에서 퇴실하셨습니다.
 * 1.입실 2.퇴실 3.보기 4.종료: 4
 * 프로그램을 종료합니다
 */
//내가 짠 코드
//import java.util.*;
//public class Exam_05 {
//	public static void main(String[] args) {
//		Scanner in = new Scanner(System.in);
//
//		System.out.print("방의 갯수: ");
//		int roomSu = in.nextInt(); // 방 갯수
//		String room[] = new String[roomSu]; // 방 상태
//		
//		for(int i=0; i<roomSu; i++) { // 방 초기값 설정
//			room[i] = "빈방"; // room[0] = "빈방" ...
//		}
//		
//		while(true) {
//			System.out.print("1.입실 2.퇴실 3.보기 4.종료: ");
//			int select = in.nextInt(); // 선택지
//
//			switch(select) { // 선택지에 대하여
//			case 1: // 1번 고르면
//				System.out.println("입실하실 방의 번호: ");
//				int choice = in.nextInt(); // 방 번호를 고르면
//				if(room[choice-1] == "사용중") { // 사용중이면
//					System.out.println(choice + "호실은 사용중입니다.");
//				}else if(room[choice-1] == "빈방") { // 빈방이면
//					room[choice-1] = "사용중"; // 사용중으로 변경
//					System.out.println(choice + "호실에 입실하셨습니다.");
//				}
//				break;
//
//			case 2:
//				System.out.print("퇴실하실 방의 번호: ");
//				int choice_2 = in.nextInt();
//				if(room[choice_2-1] == "빈방") { // 빈방이면
//					System.out.println(choice_2 + "호실은 빈방입니다.");
//				}else { // 사용중이면
//					room[choice_2-1] = "빈방"; // 빈방으로 변경
//					System.out.println(choice_2 + "호실에서 퇴실하셨습니다.");
//				}
//				break;
//			case 3:
//				for(int i = 0; i<roomSu; ++i) {
//					System.out.println(i+1 + "호실: " + room[i]);
//				}
//				break;
//			case 4:
//				System.out.println("프로그램을 종료합니다.");
//				System.exit(0);
//				
//			default :
//				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요.");
//			}
//			
//		}

import java.util.*;

public class Exam_05 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		System.out.print("방의 갯수를 입력 : ");
		int roomSu = in.nextInt();
		boolean[] room = new boolean[roomSu];
		//false는 빈방, true는 사용중
		
		while(true) {
			System.out.print("1.입실  2.퇴실  3.보기  4.종료 : ");
			int select = in.nextInt();
			int roomNum;
			switch(select) {
			case 1 :
				do {
					System.out.print("입실하실 방의 번호 : ");
					roomNum = in.nextInt();
				}while(roomNum<1 || roomNum>roomSu);
				if (room[roomNum-1]) {
					System.out.println(roomNum+"호실은 사용중입니다.");
				}else {
					room[roomNum-1] = true;
					System.out.println(roomNum+"호실에 입실하셨습니다.");
				}
				break;
			case 2 :
				do {
					System.out.print("퇴실하실 방의 번호 : ");
					roomNum = in.nextInt();
				}while(roomNum<1 || roomNum>roomSu);
				if (room[roomNum-1]) {
					room[roomNum-1] = false;
					System.out.println(roomNum+"호실에서 퇴실하셨습니다.");
				}else {
					System.out.println(roomNum+"호실은 빈방입니다.");
				}
				break;
			case 3 :
				for(int i=0; i<roomSu; ++i) {
					if (room[i]) {
						System.out.printf("%d호실 - 사용중", i+1);
					}else {
						System.out.printf("%d호실 = 빈방", i+1);
					}
				}
				break;
			case 4 :
				System.out.println("프로그램을 종료합니다.");
				System.exit(0);
			default :
				System.out.println("잘못입력하셨습니다. 다시입력해주세요");
			}
		}
	}

		

	}
import java.util.Scanner;

/*
 * 인원수를 입력받고 그 인원수대로 이름과 국어, 영어점수를 입력받은 후,
 * 이름과 총점, 순위를 알려주는 프로그램
 */
public class Exam_04 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);

		System.out.print("인원수를 입력하세요: ");
		int inwon = in.nextInt();

		String name[] = new String[inwon]; // 입력받은 숫자가 배열크기
		int kor[] = new int[inwon];
		int eng[] = new int[inwon];
		int sum[] = new int[inwon];
		int rank[] = new int[inwon];
		
		for(int i=0; i<inwon; i++) {
			System.out.print(i+1 + "번째 이름: ");
			name[i] = in.next();

			System.out.print(i+1 + "번째 국어점수: ");
			kor[i] = in.nextInt();
			
			System.out.print(i+1 + "번째 영어점수: ");
			eng[i] = in.nextInt();
			
			sum[i] = kor[i] + eng[i]; // 총합
			
			rank[i] = 1; // 순위를 구하기 위해 기본값 1로

		}
		
		//순위 구하기 알고리즘
		for(int i=0; i<inwon; ++i) {		//i = 나
			for(int j=0; j<name.length; ++j) {	//j = 다른사람
				if (sum[i] < sum[j]) {
					rank[i]++;
				}
			}
		}
		
		for(int i=0; i<inwon; i++) {
			System.out.printf("%s님의 총점은 %d점이고, 순위는 %d위입니다. \n", name[i], sum[i], rank[i]);
		}
		
	}

}

소트

import java.util.*;

public class Exam_08 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		int[] arr = new int[10];
		for(int i=0; i<arr.length; ++i) {
			System.out.print(i+1+"번째 수를 입력 : ");
			arr[i] = in.nextInt();
		}
		
		Arrays.sort(arr);

		/*
		//insert sort
		for(int i=1; i<arr.length; ++i) {
			int temp = arr[i];
			int j = i-1;
			while(j>=0) {
				if (temp < arr[j]) {
					arr[j+1] = arr[j];
					j--;
				}else {
					arr[j+1] = temp;
					break;
				}
			}
			if (j<0) {
				arr[0] = temp;
			}
			//temp < arr[i-1],	temp < arr[i-2] ... temp < arr[0]
			/*
			for(int j=i-1; j>=0; --j) {
				if (temp < arr[j]) {
					arr[j+1] = arr[j];
				}else {
					arr[j+1] = temp;
					break;
				}
				if (j==0) {
					arr[0] = temp;
				}
			}*/
		//}
		//bubble sort
		/*
		for(int i=arr.length-2; i>=0; --i) {
			for(int j=0; j<=i; ++j) {
				if (arr[j] > arr[j+1]) {
					int imsi = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = imsi;
				}
			}
		}
		
		//select sort
		/*
		for(int i=0; i<arr.length-1; ++i) {
			for(int j=i+1; j<arr.length; ++j) {
				if (arr[i] > arr[j]) {
					int imsi = arr[i];
					arr[i] = arr[j];
					arr[j] = imsi;
				}
			}
		}
		*/
				
		for(int i=0; i<arr.length-1; ++i) {
			System.out.printf("%d , ", arr[i]);
		}
		System.out.println(arr[arr.length-1]);
	}
}











배열
: 동일한 자료형을 메모리상에 연속적으로 나열하여 관리하는 것
ex) 5명 학생의 국어점수를 관리하고자 할 때, 변수 5개를 써도 되지만(kor1, kor2, kor3, kor4, kor5) kor 하나의 변수를 만들고 그 변수 안에 1~5의 번호를 만들어 관리하는 것이 훨씬 효율적이다.

선언방법
변수선언: int kor;
배열선언:

  • int kor[ ] = new int[5]; //'동적할당' 상수가 아닌 변수를 초기값(5 자리)으로 넣을 수 있음.
  • int[ ] kor = new int[5];
  • int kor[ ]; kor = new int[5];
    => kor[0], kor[1], kor[2], kor[3], kor[4]
  • int[] a = new int[]{1,2,3,4,5}; 초기값 주는 경우

length: 배열의 길이를 반환 (배열명.length)

int[] a = new int[2];
a[0] += 1
배열을 선언할 때 초기값이 부여, 정수는 0 논리는 false 실수는 0.0 (그럼 문자열은??)

profile
web developer

0개의 댓글