- 메소드
- Arrays.toString : 배열의 내용을 문자열 형태로 표현
- Arrays.deepToString : 다차원 배열에서 사용
- 참 또는 거짓을 5개 출력하기
1. 크기가 5인 boolean 배열을 생성한다.
2. 0부터 배열의 길이까지 반복하는 루프를 시작한다.
3. 배열의 각 인덱스에 대해 다음과 같이 조건을 확인하고 값을 할당한다.
- 만약 인덱스가 짝수라면 해당 요소에 false를 할당한다.
- 인덱스가 홀수라면 해당 요소에 true를 할당한다.
4. 생성된 boolean 배열의 각 요소를 출력한다.
boolean boolArray[] = new boolean[5];
for (int i = 0; i < boolArray.length; i++) {
boolArray[i] = (i % 2 == 0) ? false : true;
}
for (boolean b : boolArray) {
System.out.print(b+ ", ");
}
- 1이 두개, 3이 네개, 5가 다섯개 출력하기 (출력문 : 113333555555)
1. 출력할 값들을 저장하는 배열 numbers를 생성한다. (예: 1, 3, 5)
2. 각 값들이 출력될 횟수를 저장하는 배열 counts를 생성한다. (예: 2, 4, 6)
3. numbers 배열의 길이만큼 반복하는 외부 for 루프를 시작한다.
- 현재 반복에서 사용할 숫자를 numbers 배열에서 가져와 number 변수에 저장한다.
- 현재 반복에서 사용할 횟수를 counts 배열에서 가져와 count 변수에 저장한다.
4. 내부 for 루프를 시작하여 count 횟수만큼 반복한다.
5. 현재 숫자를 출력한다.
6. 모든 반복이 완료되면 출력이 끝난다.
public static void main(String[] args) {
int numbers[] = {1,3,5}; // 출력할 값 저장
int counts[] = {2,4,6}; // 출력할 횟수 저장
for (int i = 0; i < numbers.length; i++) { // for문으로 numbers의 길이만큼 반복
int number = numbers[i]; // 반복에서 사용할 숫자 i에 저장
int count = counts[i]; // 반복에서 사용할 횟수 i에 저장
for (int j = 0; j < count; j++) { // for문으로 count 횟수만큼 반복
System.out.print(number);
}
}
}
}
- 시리얼 키 만들기
키 패턴
- MH37W-N47XK-V7XM9-C7227-GCQG9
- AADDA-ADDAA-ADAAD-ADDDD-AAAAD
- A 영문자(A~X), D 숫자 (1~9)
1. 시리얼 키를 저장할 배열을 생성한다.
2. 10번 반복하는 루프를 시작한다.
3. 빈 문자열을 생성하여 시리얼 키 부분을 초기화한다.
4. 5번 반복하는 루프를 시작한다. (시리얼 키는 총 5개의 그룹으로 이루어져 있다.)
- 랜덤으로 선택한 A 영문자(A~X)를 시리얼 키에 추가한다.
- 랜덤으로 선택한 D 숫자(1~9)를 시리얼 키에 추가한다.
- 만약 현재 반복이 마지막이 아니라면, '-'를 시리얼 키에 추가한다.
4. 생성된 시리얼 키를 배열에 추가한다.
5. 생성된 10개의 시리얼 키를 출력한다.
String pattern = "AADDA-ADDAA-ADAAD-ADDDD-AAAAD";
String serialData[] = new String[10];
for (int j = 0; j < 10; j++) {
String serial = "";
for (int i = 0; i < pattern.length(); i++) {
if (pattern.charAt(i) == 'A') {
serial += Character.toString((char) (Math.random() * 23 + 66));
} else if (pattern.charAt(i) == 'D') {
serial += Character.toString((char) (Math.random() * 9 + 49));
} else {
serial += "-";
}
serialData[j] = serial;
}
}
for (String s : serialData ) {
System.out.println(s);
}
}
- 다음 입사 문제
1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오.
(단 점들의 배열은 모두 정렬되어있다고 가정한다.)
예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다.
1. 정렬된 1차원 점 배열 daum을 생성한다.
2. 첫 번째 점을 fir 변수에 저장한다.
3. 두 번째 점을 sec 변수에 저장한다.
4. 두 점 사이의 거리 차이를 저장할 temp 변수를 초기화한다.
5. 0부터 배열의 길이 - 1까지 반복하는 for 루프를 시작한다.
-현재 점과 다음 점 사이의 거리가 현재까지의 최소 거리(temp)보다 작다면:
- 현재 점을 fir 변수에 저장한다.
- 다음 점을 sec 변수에 저장한다.
- 현재까지의 최소 거리(temp)를 갱신한다.
6. 최종적으로 가장 거리가 짧은 두 점을 출력한다.
public static void main(String[] args) {
int daum[] = {1,3,4,8,13,17,20};
int fir = daum[0];
int sec = daum[1];
int temp = daum[1]-daum[0]; // 거리 차이 저장 변수
for (int i = 0; i < daum.length-1; i++) {
if(daum[i+1] - daum[i] < temp) { // 거리 차이가 1, 3보다 작아?
fir = daum[i];
sec = daum[i+1];
temp = daum[i+1] - daum[i];
}
}
System.out.println("결과 : " + fir + ", " + sec);
}
}
- 다차원 배열
// 2차원 배열 MultiArray = 배열속에 배열이 있음
// 이중 for문으로 작성 가능
// index, length
public class MultiArray01 {
public static void main(String[] args) {
int num = 10;
int numbers[] = new int[5];
int numbers2[] = new int[] { 10,20,30,40,50 };
int numbers3[] = { 10,20,30,40,50 };
int numbers4[][] = new int[5][5]; // 칸의 개수 25개 저장 가능
int numbers5[][] = new int[2][3]; // 6개 (집이 2개, 방이 3개)
// 값 대입
numbers4[0][0] = 15;
numbers4[0][1] = 25;
numbers4[0][2] = 30;
numbers4[0][3] = 35;
numbers4[0][4] = 40;
numbers4[1][0] = 17;
numbers4[1][1] = 27;
numbers4[1][2] = 37;
numbers4[1][3] = 47;
numbers4[1][4] = 57;
for (int i = 0; i < numbers4.length; i++) {
for (int j = 0; j < numbers4.length; j++) {
System.out.print(numbers4[i][j] + ", ");
}
System.out.println("");
}
// numbers5 -> 2 * 3
// System.out.println(numbers5.length); // 전체 길이
// System.out.println(numbers5[0].length); // 첫 []의 길이
for (int i = 0; i < numbers5.length; i++) {
for (int j = 0; j < numbers5[i].length; j++) {
System.out.print(numbers5[i][j] + ", ");
}
System.out.println("");
}
int numbers6[][] = new int[4][2]; // 8개 칸
for (int i = 0; i < numbers6.length; i++) { // 4
for (int j = 0; j < numbers6[i].length; j++) { //
System.out.print(numbers6[i][j] + ", ");
}
System.out.println("");
}
int scores[][] = new int[2][3];
scores[0][0] = 1;
scores[0][1] = 2;
scores[0][2] = 3;
scores[1][0] = 4;
scores[1][1] = 5;
scores[1][2] = 6;
int number = 1;
for (int i = 0; i < scores.length; i++) {
for (int j = 0; j < scores[i].length; j++) {
scores[i][j] = number++;
// System.out.print(scores[i][j] + ", ");
}
// System.out.println(Arrays.toString(scores));
for (int[] is : scores) {
System.out.println(Arrays.toString(is));
}
System.out.println("==================");
System.out.println(Arrays.deepToString(scores));
}
}
}
// int arr[][] = { { 1,2,3 },{4,5,6},{7,8,9}}; // 이런 형태로
int arr[][] = new int[3][3];
int number = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = number++;
}
}
System.out.println(Arrays.deepToString(arr));
}
}
- 3x3 배열에 1~9까지 랜덤한 수를 입력하기. (중복 값이 발생하지 않도록)
int sam[][] = new int[3][3];
for (int i = 0; i < sam.length; i++) {
for (int j = 0; j < sam[i].length; j++) {
int temp = (int) (Math.random() * 9 + 1);
A: for (int k = 0; k < sam.length; k++) {
for (int k2 = 0; k2 < sam[i].length; k2++) {
if (sam[k][k2] == temp) {
j--;
break A;
}
}
}
}
for (int[] is : sam) {
System.out.println(Arrays.toString(is));
}
}
System.out.println("======================================");
//바꿔서 해보기
// 1 ~ 9를 랜덤하게 뽑아서 배열에 저장
int random[] = new int[9];
sam = new int[3][3];
//1 - 9숫자 랜덤하게 만들기
A:for (int i = 0; i < random.length; i++) {
int temp2 = (int) (Math.random() * 9 + 1);
//중복검사
for (int j = 0; j < random.length; j++) {
if(random[j] == temp2){
i--;
continue A;
}
}
random[i] = temp2;
}
System.out.println(Arrays.toString(random));
//[9, 7, 8, 3, 2, 1, 5, 6, 4]
//이제 입력하기
int count = 0;
for (int i = 0; i < sam.length; i++) {
for (int j = 0; j < sam[i].length; j++) {
sam[i][j] = random[count++];//차례대로 입력하시면 됩니다.
}
}
//출력
for (int[] is : sam) {
System.out.println(Arrays.toString(is));
}
System.out.println("======================================");
sam = new int[3][3];
int r1, r2; // index 번호
for (int i = 1; i < 10; i++) { // 숫자
r1 = (int) (Math.random() * 3); // 0 1 2
r2 = (int) (Math.random() * 3); // 0 1 2
if (sam[r1][r2] == 0) { // 0 = 초기값
sam[r1][r2] = i;
System.out.println(r1 + ":" + r2 + "=" + i);
} else {
i--;
System.out.println("중복 발생 재출력");
}
}
// 출력
for (int[] is : sam) {
System.out.println(Arrays.toString(is));
}
public static void main(String[] args) {
int[][] a = new int[3][5];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = j * 3 + (i+1);
System.out.print(a[i][j] + " ");
}
System.out.println(); // 줄바꿈
}
'개발 공부 Today I Learned' 카테고리의 다른 글
[국비 16일차 TIL] JAVA 배열 복사 / 이중for문 / String (0) | 2023.12.12 |
---|---|
[국비 15일차 TIL] 자바 반복문 while, do-while, switch, 동적가변배열 (1) | 2023.12.11 |
[국비 13일차 TIL] JAVA 배열 연습 (2) | 2023.12.07 |
[국비 12일차 TIL] 자바 반복문 for문 (1) | 2023.12.06 |
[국비 11일차 TIL] JAVA 연산자, 조건문 if (2) | 2023.12.05 |
댓글