일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- RDBMS
- 자바문제
- SpringFramework
- devcamp
- SQL
- 불친절한SQL
- ApplicationContext
- 국비지원
- cleanbuild
- 인프런
- oauth
- 오라클
- 남궁성
- 자바기초
- 자바연습문제
- 스프링
- 기초쿼리
- MySQL
- 쿼리
- 클린빌드
- 스프링의정석
- java
- mariadb
- Oracle
- 소셜로그인
- 패캠
- 자바의정석
- 패스트캠퍼스
- Spring
- Today
- Total
Darren's Devlog
자바의정석 3편, ch4 연습문제 풀이 본문
네이버 블로그에서 티스토리로 이전하는 중입니다.
https://blog.naver.com/darren_gwon/222489546424
ch4 연습문제 풀이
4-1)
다음 문장들을 조건식으로 표현하라.
1. int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식 2. char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식 3. char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식 4. char형 변수 ch가 숫자('0' ~ '9')일 때 true인 조건식 5. char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식 6. int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지 않을 때 true인 조건식 7. boolean형 변수 powerOn가 false일 때 true인 조건식 8. 문자열 참조변수 str이 "yes" 일 때 true인 조건식 |
1. 10<x && x<20
2. ch!=' ' && ch!='\t' 3. ch=='x' || ch=='X' 4. '0'<=ch && ch<='9' 5. ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') 6. year%400==0 || year%4 && year%100!=0 7. powerOn==false 8. str.equals("yes") |
4-2)
1부터 20까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오.
class Exercise4_2 {
public static void main(String[] args) {
int sum = 0;
for(int i =1; i<=20; i++){
if(!(i%2==0 || i%3==0)){
sum+=i;
}
}
System.out.println(sum);
}
}
//결과: 73
4-3)
1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.
public class Exercise4_3 {
public static void main(String[] args) {
int sum = 0;
int total = 0;
for(int i=1; i<=10; i++){
sum+=i;
total+=sum;
System.out.println(total);
}
} // end of main
} // end of class
4-4)
1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상 되는지 구하시오.
내용을 입력하세요.
note: 못 풀겠다.
4-5)
다음의 for문을 while문으로 변경하시오.
public class Exercise4_5 {
public static void main(String[] args) {
for(int i=0; i<=10; i++) {
for(int j=0; j<=i; j++)
System.out.print("*");
System.out.println();
}
} // end of main
} // end of class
public class Exercise4_5 {
public static void main(String[] args) {
int i = 0;
while(i<=10){
int j = 0;
while (j<=i){
System.out.print("*");
j++;
}
System.out.println();
i++;
}
}
}
*
** *** **** ***** ****** ******* ******** ********* ********** *********** |
4-6)
두 개의 주사위를 던졌을 때 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성하시오.
class Exercise4_6 {
public static void main(String[] args) {
int[] dice1 = {1,2,3,4,5,6};
int[] dice2 = {1,2,3,4,5,6};
for(int i=0; i<dice1.length; i++){
for(int j =0; j<dice1.length; j++){
if(dice1[i]+dice2[j]==6){
System.out.printf("[%d, %d]%n", dice1[i], dice2[j]);
}
}
}
}
}
[1, 5]
[2, 4] [3, 3] [4, 2] [5, 1] |
4-7)
Math.random()을 이용해서 1부터 6사이의 임의의 정수를 변수 value에 저장하는 코드를 완성하라.
(1)에 알맞은 코드를 넣으시오.
class Exercise4_7 {
public static void main(String[] args) {
int value = ( /* (1) */ );
System.out.println("value:"+value);
}
}
class Exercise4_7 {
public static void main(String[] args) {
int value = (int) (Math.random() * 6) + 1;
System.out.println("value:"+value);
}
}
4-8)
방정식 2x+4y=10의 모든 해를 구하시오.
단 x와 y는 정수이고 각각의 범위는 0<=x<=10, 0<=y<=10이다.
class Exercise4_7 {
public static void main(String[] args) {
for (int x = 0; x <= 10; x++) {
for (int y = 0; y <= 10; y++) {
if((2*x+4*y)==10){
System.out.printf("[x= %d, y= %d]%n", x, y);
}
}
}
}
}
결과
//x=1, y=2
//x=3, y=1
//x=5, y=0
4-9)
숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라.
만일 문자열이 "12345"라면, '1+2+3+4+5'의 결과인 15를 출력이 출력되어야 한다.
(1)에 알맞은 코드를 넣으시오.
[Hint] String클래스의 charAt(int i)을 사용
class Exercise4_9 {
public static void main(String[] args) {
String str = "12345";
int sum = 0;
for(int i=0; i < str.length(); i++) {
sum+=str.charAt(i)-'0';
}
System.out.println("sum="+sum);
}
}
4-10)
int 타입의 변수 num이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라.
만일 문자열이 "12345"라면, '1+2+3+4+5'의 결과인 15를 출력이 출력되어야 한다.
(1)에 알맞은 코드를 넣으시오.
[주의] 문자열로 변환하지 말고 숫자로만 처리해야 한다.
class Exercise4_10 {
public static void main(String[] args) {
int num = 12345;
int sum = 0;
/*
(1) 알맞은 코드를 넣어 완성하시오.
*/
System.out.println("sum=" + sum);
}
}
class Main {
public static void main(String[] args) {
int num = 12345;
int sum = 0;
//while(num > 0) { 모범 답안
while (num != 0) {
sum+=num%10;
num/=10;
}
System.out.println("sum=" + sum);
}
}
4-11)
피보나치(Fibonnaci) 수열(數列)은 앞을 두 수를 더해서 다음 수를 만들어 나가는 수열이다.
예를 들어 앞의 두 수가 1과 1이라면 그 다음 수는 2가 되고
그 다음 수는 1과 2를 더해서 3이 되어서 1,1,2,3,5,8,13,21,... 과 같은 식으로 진행된다.
1과 1부터 시작하는 피보나치수열의 10번째 수는 무엇인지 계산하는 프로그램을 완성하시오.
public class Exercise4_11 {
public static void main(String[] args) {
// Fibonnaci 수열의 시작의 첫 두 숫자를 1, 1로 한다.
int num1 = 1;
int num2 = 1;
int num3 = 0; // 세번째 값
System.out.print(num1 + "," + num2);
for (int i = 0; i < 8; i++) {
/*
(1) 알맞은 코드를 넣어 완성하시오.
*/
}
} // end of main
} // end of class
public class Exercise4_11 {
public static void main(String[] args) {
// Fibonnaci 수열의 시작의 첫 두 숫자를 1, 1로 한다.
int num1 = 1;
int num2 = 1;
int num3 = 0; // 세번째 값
System.out.print(num1 + "," + num2);
for (int i = 0; i < 8; i++) {
num3= num1+num2;
num2=num1;
num1=num3;
System.out.print(","+num3);
}
} // end of main
} // end of class
4-12)
구구단의 일부분을 다음과 같이 출력하시오.
2*1=2 30g45467890=9tui*1=3 4*1=4
2*2=4 3*2=6 4*2=8 2*3=6 3*3=9 4*3=12 5*1=5 6*1=6 7*1=7 5*2=10 6*2=12 7*2=14 5*3=15 6*3=18 7*3=21 8*1=8 9*1=9 8*2=16 9*2=18 8*3=24 9*3=27 |
4-13)
다음은 주어진 문자열(value)이 숫자인지를 판별하는 프로그램이다.
(1)에 알맞은 코드를 넣어서 프로그램을 완성하시오.
class Exercise4_13 {
public static void main(String[] args) {
String value = "12o34";
char ch = ' ';
boolean isNumber = true;
// charAt(int i) 반복문과 를 이용해서 문자열의 문자를
// 하나씩 읽어서 검사한다.
for (int i = 0; i < value.length(); i++) {
/*
(1) 알맞은 코드를 넣어 완성하시오.
*/
}
if (isNumber) {
System.out.println(value + "는 숫자입니다.");
} else {
System.out.println(value + "는 숫자가 아닙니다.");
}
} // end of main
} // end of class
class Exercise4_13 {
public static void main(String[] args) {
String value = "12o34";
char ch = ' ';
boolean isNumber = true;
for (int i = 0; i < value.length(); i++) {
ch = value.charAt(i);
if (!('0' <= ch && ch <= '9')) {
isNumber = false;
break; //추가됨
}
}
if (isNumber) {
System.out.println(value + "는 숫자입니다.");
} else {
System.out.println(value + "는 숫자가 아닙니다.");
}
}
}
note: 문자가 아니라면 바로 반복문을 빠져나가게 break;해주는 것을 잊어버려서 나중에 추가해주었다.
4-14)
다음은 숫자맞추기 게임을 작성한 것이다.
1과 100사이의 값을 반복적으로 입력해서 컴퓨터가 생각한 값을 맞추면 게임이 끝난다
사용자가 값을 입력하면, 컴퓨터는 자신이 생각한 값과 비교해서 결과를 알려준다
사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고 몇 번 만에 숫자를 맞췄는지 알려준다.
(1)~(2)에 알맞은 코드를 넣어 프로그램을 완성하시오.
class Main {
public static void main(String[] args) {
int answer = (int) (Math.random() * 100) + 1;
int count = 0;
int input;
java.util.Scanner s = new java.util.Scanner(System.in);
do {
count++;
System.out.print("1과 100사이의 값을 입력하세요:");
input = s.nextInt(); // input .
if (input == answer) {
System.out.println("정답!");
System.out.println("시도횟수:" + count);
break;
} else if (input < answer) {
System.out.println("더 큰 값을 입력하세요.");
} else if (input > answer) {
System.out.println("더 작은 값을 입력하세요.");
}
} while (true);
}
}
1과 100사이의 값을 입력하세요:43
더 작은 값을 입력하세요. 1과 100사이의 값을 입력하세요:25 더 작은 값을 입력하세요. 1과 100사이의 값을 입력하세요:10 더 작은 값을 입력하세요. 1과 100사이의 값을 입력하세요:8 더 큰 값을 입력하세요. 1과 100사이의 값을 입력하세요:9 정답! 시도횟수:5 |
class Exercise4_15 {
public static void main(String[] args) {
int number = 12321;
int tmp = number;
int result = 0; // 변수 number를 거꾸로 변환해서 담을 변수
while (tmp != 0) {
/*
(1) 알맞은 코드를 넣어 완성하시오.
*/
}
if (number == result)
System.out.println(number + "는 회문수 입니다.");
else
System.out.println(number + "는 회문수가 아닙니다.");
} // main
}
class Exercise4_15 {
public static void main(String[] args) {
int number = 12321;
int tmp = number;
int digit = 1;
int result = 0;
while (tmp != 0) {
result+=(tmp%10)*digit;
digit*=10;
tmp/=10;
//답지
//result = result*10 + tmp % 10;
//tmp /= 10;
}
if (number == result)
System.out.println(number + "는 회문수 입니다.");
else
System.out.println(number + "는 회문수가 아닙니다.");
}
}
note: 답지랑은 조금 다르지만 작동은 똑같이 한다.
답지가 더 간결하니 나중에 문제해결을 위한 접근 방식을 바꿔보면 좋을거 같다.
'Java > 연습문제' 카테고리의 다른 글
자바의정석 3편, ch3 연습문제 풀이 (0) | 2022.06.25 |
---|---|
자바의정석 3편, ch2 연습문제 풀이 (0) | 2022.06.24 |