It Study/POWER JAVA(기본서)
POWER JAVA 14번 문제 ~ 15번 문제
prlkt5200
2022. 9. 25. 15:12
반응형
14번 문제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package test; import java.util.*; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[][] a = { { 1, 2, 3 }, { 1, 2 }, { 1 }, { 1, 2, 3 } }; for(int i = 0; i<4; i++) { System.out.println(Arrays.toString(a[i])); } } } | cs |
15번 문제
처음에는
Math.random으로 인덱스를 무작위로 주고 거기에 1 값을 주는 방식으로 for문 5회 반복 실행으로 풀어봤습니다.
문제점은 그렇게 인덱스를 무작위로 하게 되면 인덱스가 중복이 되는 경우
기존에 1이 선언된 곳에 다시 1을 선언하면서 반복횟수는 5인데, 출력값은 4개 밖에 안뜰 수가 있습니다.
그런데 얼떨떨결에 하다 보니 이유를 알게 되었는데, 제가 각 행과 열의 인덱스 두개에 전부 난수를 줌으로써
문제가 되던 것이었습니다.
해결발안은 행의 인덱스는 난수를 줘서 랜덤 뺑뺑이를 주고, 열의 인덱스는 순차적으로 진행되게끔 코드를
짜면 되는 거였습니다!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package test; import java.util.*; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // index의 값이 같지 않게 코드를 짠다. // index의 각 순서의 값을 비교하는 코드를 짠다. // 행에 해당하는 인덱스만 랜덤으로 만들고, 열에 해당하는 인덱스는 순차적으로 가게 한다. // 그러면 중복 x // 랜덤 배열 생성 int[][] arr = new int[3][5]; for (int i = 0; i < 5; i++) { arr[(int) (Math.random() * 3)][i] = 1; } // 행렬 형태로 출력 for (int j = 0; j < 3; j++) { for (int k = 0; k < 5; k++) { System.out.print(arr[j][k] + " "); if (k == 4) System.out.println(" "); } } } } | cs |
이번 장은 나름 개고생 했네요....실력이 너무 형편없으니.
실은 간단한 문제에도 막히게 되네요 ㅋㅋㅋㅋ..
그렇지만 다시 한번 프로그래밍이 재밌다는 느낌을 받아서 기분은 좋습니다 ㅎㅎ
반응형