/*
* 방의 갯수를 입력받아 방을 만들고, 그 방을 관리하는 프로그램
* 방의 갯수: 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;
배열선언:
length: 배열의 길이를 반환 (배열명.length)
int[] a = new int[2];
a[0] += 1
배열을 선언할 때 초기값이 부여, 정수는 0 논리는 false 실수는 0.0 (그럼 문자열은??)