일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시큐어코딩
- docker
- 불친절한SQL프로그래밍
- 인프런
- REGEXP_SUBSTR
- Python
- 스프링MVC
- Java의정석
- 불친절한 SQL 프로그래밍
- 스프링
- Numpy
- 자바공부
- Spring
- 자바의정석 연습문제
- 스프링 핵심원리
- 스프링 부트와 JPA
- 김영한
- 스프링입문
- 서블릿
- java
- 이것이자바다
- 자바연습문제
- 자바의정석
- JPA
- 계층 쿼리
- DispatcherServlet
- inflearn
- 분석함수
- 제네릭
- Secure Coding
- Today
- Total
Continuous Challenge
[Java의 정석_연습문제 풀이] Chapter5 배열 본문
[5-1] 다음은 배열을 선언하거나 초기화한 것이다. 잘못된 것을 고르고 그 이유를 설명하시오.
a. int[] = arr[];
b. int[] arr = {1,2,3,};
-> 마지막의 쉼표는 있어도 상관없음.
c. int[] arr = new int[5];
d. int[] arr = new int[5]{1,2,3,4,5};
-> 두 번째 대괄호안에 배열의 크기를 지정할 수 없다. 괄호{} 안의 데이터 개수에 따라 자동적으로 결정되기 때문이다.
e. int arr[5];
-> 배열을 선언할 때는 배열의 크기를 지정할 수 없음.
f. int[] arr[] = new int[3][];
답 : d, e
[5-2] 다음과 같은 배열이 있을 때, arr[3].length의 값은 얼마인가?
int[][] arr = { { 5, 5, 5, 5, 5}, {10, 10, 10}, {20, 20, 20, 20}, {30, 30} };
답 : 2
[5-3] 배열 arr에 담긴 모든 값을 더하는 프로그램을 완성하시오.
답 :
for(int i = 0; i < arr.length; i++){
sum += arr[i];
}
[5-4] 2차원 배열 arr에 담긴 모든 값의 총합과 평균을 구하는 프로그램을 완성하시오.
답 :
for(int i = 0 ;i < arr.length; i++){
for(int j =0; j < arr[i].length; j++){
total += arr[i][j];
}
}
average = (float)total / (arr.length * arr[0].length);
[5-5] 다음은 1과 9사이의 중복되지 않은 숫자로 이루어진 3자리 숫자를 만들어내는 프로그램이다. (1)~(2)에 알맞은 코드를 넣어서 프로그램을 완성하시오. ([참고] Math.random()을 사용했기 때문에 실행결과와 다를 수 있다.)
답:
(1)
tmp = ballArr[i];
ballArr[i] = ballArr[j];
ballArr[j] = tmp;
(2)
for(int i = 0; i < 3; i++){
ball3[i] = ballArr[i];
}
(2) System.arraycopy(ballArr,0,ball3,0,3); //ballArr[0]에서 ball3[0]으로 3개의 데이터를 복사.
[5-6] 다음은 거스름돈을 몇 개의 동전으로 지불할 수 있는지를 계산하는 문제이다. 변수 money의 금액을 동전으로 바꾸었을 때 각각 몇 개의 동전이 필요한지 계산해서 출력하라. 단, 가능한 한 적은 수의 동전으로 거슬러 주어야한다. (1)에 알맞은 코드를 넣어서 프로그램을 완성하시오. (Hint. 나눗셈 연산자와 나머지 연산자를 사용해야 한다.)
답 :
int cnt = money / coinUnit[i];
System.out.println(coinUnit[i]+"원 : "+cnt);
money = money - cnt * coinUnit[i];
System.out.println(coinUnit[i] + "원: " + money/coinUnit[i]);
money = money % coinUnit[i];
[5-7] 문제 5-6에 동전의 개수를 추가한 프로그램이다. 커맨드라인으로부터 거슬러 줄 금액을 입력받아 계산한다. 보유한 동전의 개수로 거스름돈을 지불할 수 없으면, '거스름돈이 부족합니다.'라고 출력하고 종료한다. 지불할 돈이 충분히 있으면, 거스름돈을 지불한 만큼 가진 돈에서 빼고 남은 동전의 개수를 화면에 출력한다. (1)에 알맞은 코드를 넣어서 프로그램을 완성하시오.
실행결과
C:\jdk1.8\work\ch5>java Exercise5_7
USAGE: java Exercise5_7 3120
C:\jdk1.8\work\ch5>java Exercise5_7 3170
money=3170 원
500원 : 5
100원 : 5
50원 : 3
10원 : 2
=남은 동전의 개수 =
500원 :0
100원 :0
50원 :2
10원 :3
C:\jdk1.8\work\ch5>java Exercise5_7 3510
money=3510
500원 : 5
100원 : 5
50원 : 5
10원 : 5
거스름돈이 부족합니다.
답 :
(1)
//1. 금액(money)을 동전단위로 나눠서 필요한 동전의 개수(coinNum)를 구한다.
coinNum = money / coinUnit[i];
// 2. 배열 coin에서 coinNum만큼의 동전을 뺀다. (만일 충분한 동전이 없다면 배열 coin에 있는 만큼만 뺀다.)
if (coin[i] >= coinNum) {
coin[i] -= coinNum;
} else {
coinNum = coin[i];
coin[i] = 0;
}
// 3. 금액에서 동전의 개수(coinNum)와 동전단위를 곱한 값을 뺀다.
money = money - coinUnit[i] * coinNum;
[5-8] 다음은 배열 answer에 담긴 데이터를 읽고 각 숫자의 개수를 세어서 개수만큼 '*'을 찍어서 그래프를 그리는 프로그램이다. (1)~(2)에 알맞은 코드를 넣어서 완성하시오.
답 :
(1) counter[answer[i]-1]++;
(2)
System.out.print(counter[i]);
for(int j =0; j < counter[i]; j++){
System.out.print("*");
}
[5-9] 주어진 배열을 시계방향으로 90도 회전시켜서 출력하는 프로그램을 완성하시오.
답 :
(1) result[j][star.length - 1 - i] = star[i][j];
[5-10] 다음은 알파벳과 숫자를 아래에 주어진 암호표로 암호화하는 프로그램이다. (1)에 알맞은 코드를 넣어서 완성하시오.
답 :
(1)
if(ch>='a'&&ch<='z'){
result += abcCode[ch-'a'];
}else{
result += numCode[ch-'0'];
}
[5-11] 주어진 2차원 배열의 데이터보다 가로와 세로로 1이 더 큰 배열을 생성해서 배열의 행과 열의 마지막 요소에 각 열과 행의 총합을 저장하고 출력하는 프로그램이다. (1)에 알맞은 코드를 넣어서 완성하시오.
답 :
result[i][j] = score[i][j];
result[i][score[0].length] += result[i][j];
result[score.length][j] += result[i][j];
result[score.length][score[0].length] += result[i][j];
[5-12] 예제 5-23을 변경하여, 아래와 같은 결과가 나오도록 하시오.
Q1. chair의 뜻은? dmlwk
틀렸습니다 정답은 의자입니다 .
Q2. computer의 뜻은? 컴퓨터
정답입니다.
Q3. integer의 뜻은? 정수
정답입니다.
전체 3문제 중 2문제 맞추셨습니다.
[5-13] 단어의 글자위치를 섞어서 보여주고 원래의 단어를 맞추는 예제이다. 실행결과와 같이 동작하도록 예제의 빈 곳을 채우시오.
답 :
for(int j =0; j < question.length; j++){
int idx = (int)(Math.random() % question.length);
char tmp;
tmp = question[j];
question[j] = question[idx];
question[idx] = tmp;
}
'Study > Java의 정석' 카테고리의 다른 글
[Java의 정석_연습문제 풀이] Chapter7 객체지향 프로그래밍2 (1) | 2019.10.18 |
---|---|
[Java의 정석_연습문제 풀이] Chapter6 객체지향 프로그래밍1 (1) | 2019.10.17 |
[Java의 정석_연습문제 풀이] Chapter4 조건문과 반복문 (0) | 2019.10.08 |
[Java의 정석_연습문제 풀이] Chapter3 연산자 (0) | 2019.10.07 |
[Java의 정석_연습문제 풀이] Chapter2 변수 (0) | 2019.10.04 |