1장
- 스캐너를 통해 입력받은 문자를 원하는 형태로 바꿔보기
- ( nextLine()을 이용하여 String으로만 받음)
- 스캐너를 통해 데이터 2건을 각각 입력 받는다.
- 콘솔창에 정수형 데이터 1~100사이의 값을 입력받은 뒤 입력 된 값을 정수형 변수 iData에 담고 출력
- 위 문제 해결 후 3.5를 콘솔에 입력 후 실수형 변수에 담고 출력
public class Step01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
int iData = Integer.parseInt(str);
System.out.println("사용자가 입력 한 값 : " + str);
System.out.println("iData에 담긴 값 : iData (" + iData + ")");
str = scan.nextLine();
double dData = Double.parseDouble(str);
System.out.println("사용자가 입력 한 값 : " + str);
System.out.println("dData변수에 담긴 값 : dData ("+dData+")");
}
}
A
- 정수값은 int, 실수값은 double에 담는다. 문자열을 int로 변환하는 Integer, double로 변환하는 Double을 이용한다.
- 스캐너를 통해 두 수를 입력 받고 두 수를 비교하여 출력 하기. ( 삼항 연산자 이용해보기 )------------------출력결과(console)-------------------- 첫번째 숫자를 입력하세요 . 1 두번째 숫자를 입력하세요 . 10
- 1은 10보다 작습니다 . TRUE 1은 10보다 큽니다. FALSE 1과 10은 같습니다 . FALSE
- (※ if , switch등의 비교문은 사용 불가 ※)
package quest01;
import java.util.Scanner;
public class Step02 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("첫번째 숫자를 입력하세요.");
String str1 = scan.nextLine();
System.out.println("두번째 숫자를 입력하세요.");
String str2 = scan.nextLine();
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
String str3 = num1 < num2 ? "TRUE" : "FALSE";
String str4 = num1 > num2 ? "TRUE" : "FALSE";
String str5 = num1 == num2 ? "TRUE" : "FALSE";
System.out.println(num1 + "은 " + num2 + "보다 작습니다. " + str3);
System.out.println(num1 + "은 " + num2 + "보다 큽니다. " + str4);
System.out.println(num1 + "과 " + num2 + "은 같습니다. " + str5);
}
}
A
- 문자열로 받은 정수를 숫자로 변환하여 저장한다.
- 3항 연산자를 통해 문자열”TRUE”와 “FALSE”를 각각 저장하여 출력한다.
2장
- 조건문( if , switch )
- 스캐너를 통해 입력 된 값을 비교 하여 출력하는 프로그램을 작성 하시오. ( 값이 1 이면 '남자' 2이면 '여자',3이면 '남자,4이면 여자 그외 오류를 콘솔창에 출력하며 논리 연산자를 사용한다. )
- 비교 후 데이터 : 입력 오류 입니다.
- 입력 된 데이터 : 2 비교 후 데이터 : 여자 입니다.
package quest02;
import java.util.Scanner;
public class Step01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (true) {
System.out.print("입력 된 데이터 : ");
String str = scan.nextLine();
int num = Integer.parseInt(str);
System.out.print("비교 후 데이터 : ");
if (num == 1 || num == 3) {
System.out.println("남자 입니다.");
} else if (num == 2 || num == 4) {
System.out.println("여자 입니다.");
} else {
System.out.println("입력 오류 입니다.");
break;
}
System.out.println();
}
}
}
A
- 입력된 문자열을 정수로 받아준다.
- if문의 조건을 || or 연산을 통하여 나열하고 각각 남자와 여자의 출력을 지정한다.
- 스캐너를 통해 각 각 userId , userPw를 입력 받습니다. 입력 받은 값을 비교해서 아이디가 admin 이고 비밀번호가 admin1234인 경우에는 관리자님 환영합니다. 아이디와 비밀번호가 일치 하지 않는 경우에는 잘못된 접근입니다를 출력하는 프로그램을 작성하시오.
- -------------------출력결과(console)-------------------- 아이디를 입력하세요 : admin 비밀번호를 입력하세요 : admin1234 로그인 중입니다. 관리자님 환영합니다. admin님 접속
- -------------------출력결과(console)-------------------- 아이디를 입력하세요 : admin 비밀번호를 입력하세요 :1234 로그인 중입니다. 잘못된 접근 입니다 아이디 또는 비밀번호를 확인 하세요.!!
package quest02;
import java.util.Scanner;
public class Step02 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("아이디를 입력하세요 : ");
String userId = scan.nextLine();
System.out.print("비밀번호를 입력하세요 : ");
String userPw = scan.nextLine();
System.out.println("로그인 중입니다.");
if (userId.equals("admin")&&userPw.equals("admin1234")) {
System.out.println("관리자님 환영합니다. admin님 접속");
} else {
System.out.println("잘못된 접근 입니다. 아이디 또는 비밀번호를 확인하세요!!");
}
}
}
A
- 문자열을 각각 받아준다.
- 받아준 문자열을 .equals()연산을 통해 값의 비교를 하여 일치하는 경우에만 접속으로 출력한다.
- 스캐너를 통해 각 각 dataA와 dataB에 정수를 입력 받고 두수를 비교 하여 출력 하는 프로그램을 작성 하세요. ( 출력 결과에서 제공하는 모든 숫자를 입력하고 똑같이 나오는지 확인 )
- -------------------출력결과(console)-------------------- 입력 된 데이터 : dataA: 10 , dataB : 20 비교 후 데이터 : dataA(10) < dataB(20)
- -------------------출력결과(console)-------------------- 입력 된 데이터 : dataA: 10 , dataB : 10 비교 후 데이터 : dataA(10) == dataB(10)
- -------------------출력결과(console)-------------------- 입력 된 데이터 : dataA: 20 , dataB : 10 비교 후 데이터 : dataA(20) > dataB(10)
package quest02;
import java.util.Scanner;
public class Step03 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str1 = scan.nextLine();
String str2 = scan.nextLine();
int dataA = Integer.parseInt(str1);
int dataB = Integer.parseInt(str2);
System.out.println("입력 된 데이터 : dataA: "+ dataA + " , dataB : "+ dataB);
String calc = dataA>dataB?">":dataA<dataB?"<":"==";
System.out.println("비교 후 데이터 : dataA: ("+ dataA +") "+ calc+" dataB : ("+ dataB+")");
}
}
A
- 받아준 문자열을 dataA와 dataB에 정수 형태로 변환하여 받아준다.
- calc 문자열 변수에 3항 연산자를 이용하여 비교 결과를 저장하여 출력한다.
- 스캐너를 통해 자연수를 iData라는 변수에 입력받고 다음과 같이 출력 되는 프로그램을 작성하세요. (자연수는 반드시 0보다 크며 100보다는 작은 수를 입력하세요. )
- -------------------출력결과(console)-------------------- 입력 된 데이터 : 5 출력 데이터 : 5 , 4 , 3 , 2 , 1 , ★ ★★ ★★★ ★★★★ ★★★★★
package quest02;
import java.util.Scanner;
public class Step04 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("입력 된 데이터 : ");
String str = scan.nextLine();
int iData = Integer.parseInt(str);
System.out.print("출력 데이터 : ");
for (int i = 0; i<iData; i++) {
System.out.print(iData-i+" , ");
}
System.out.println();
String star = "★";
for (int i = 0; i<iData; i++) {
System.out.println(star);
star +="★";
}
}
}
A
- 받아준 문자열을 iData에 정수 형태로 변환하여 저장한다.
- 반복문을 통해 iData에서 1까지 숫자를 출력하는 반복문을 작성한다.
- star 문자열 변수에 ★를 저장하고, star를 출력하고 star에 복합대입연산자로 ★를 추가하는 반복문을 작성한다.
- 스캐너를 통해 각 각 dataA와 dataB에 정수를 입력 받고 두수를 사이의 누적합을 계산하는 프로그램을 작성 하세요.
(dataA와 dataB는 반드시 다른 수를 입력하며 dataA와 dataB 어느 수가 큰 수인지는 알수 없음)
-------------------출력결과(console)-------------------- 입력 된 데이터 : dataA: 5 , dataB : 10 출력 데이터 : 5 + 6 + 7 + 8 + 9 + 10 = 45 입니다.
-------------------출력결과(console)-------------------- 입력 된 데이터 : dataA: 10 , dataB : 5 출력 데이터 : 5 + 6 + 7 + 8 + 9 + 10 = 45 입니다.
package quest02;
import java.util.Scanner;
public class Step05 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str1 = scan.nextLine();
String str2 = scan.nextLine();
int dataA = Integer.parseInt(str1);
int dataB = Integer.parseInt(str2);
System.out.println("입력 된 데이터 : dataA: "+ dataA + ", dataB : "+ dataB);
System.out.print("출력 데이터 : ");
int from, to;
int sum = 0;
if (dataA<dataB) {
from = dataA;
to = dataB;
} else {
from = dataB;
to = dataA;
}
for (int i = from; i<=to; i++) {
System.out.print(i);
if (i==to) {
sum += i;
System.out.print(" = "+sum+" 입니다.");
} else {
System.out.print(" + ");
sum += i;
}
}
}
}
A
- 받아준 문자열을 dataA와 dataB에 정수 형태로 변환하여 저장한다.
- 각 값에 저장된 숫자를 출력한다.
- int from과 to를 선언하고 출력할 합계 sum을 0으로 초기화한다.
- 조건문을 통해 dataA와 dataB를 비교하고 작은 값을 from에, 큰 값을 to에 저장한다.
- 반복문을 통해 from부터 시작하고 to와 같을 때 까지 반복하는 반복문을 작성하고 , i를 출력한다.
- 조건문을 추가해 to와 같기 전 까지는 i 뒤에 +를 붙이고 sum에 i를 더한다.
- to와 같아진 경우 sum에 i를 더한 후 = sum의 결과를 출력하도록 한다.
3장
- 0부터 9까지의 숫자 중 '일부'가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 출력 하도록 프로그램을 완성해주세요.
- 예시 : [1,2,3,4,6,7,8,0]
package quest03;
public class Step01 {
public static void main(String[] args) {
int[] numbers = {5,8,4,0,6,7,9};
int sum =0;
for (int i = 0; i<numbers.length; i++) {
sum+=numbers[i];
}
System.out.println(45-sum);
}
}
A
- 0~9까지 수의 합은 45이다.
- int sum=0으로 초기화하고, 각 배열의 값을 sum에 더하는 반복문을 작성한다.
- 일부 없는 값의 합은 45에서 현재 있는 값의 합을 뺀 만큼이 된다.
- swap이라는 개념을 이용해서 1차원 배열에 들어있는 int값들을 오름 차순으로 정렬 하는 프로그램을 작성하세요.어떤 식으로 해도 상관은 없습니다. { 3 , 5 ,7 , 9 , 1 , 2 , 4 , 10}; 배열 준비 예시.
- 배열 정렬 후 결과 : { 1 , 2 , 3, 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
package quest03;
public class Step02 {
public static void main(String[] args) {
int[] numbers = { 3 , 5 ,7 , 9 , 1 , 2 , 4 , 10, 8};
for (int i =0; i<numbers.length-1; i++) {
for (int j=0; j<numbers.length-1; j++) {
if (numbers[j] > numbers[j+1]) {
int swap = numbers[j+1];
numbers[j+1]=numbers[j];
numbers[j] = swap;
}
}
}
for (int i = 0; i<numbers.length; i++) {
System.out.print(numbers[i]+ " ");
}
}
}
A
- 배열의 마지막 숫자가 맨 앞으로 오기까지 비교 연산 최대는 length-1이고, 비교를 2 수를 하기 때문에 length-1만큼 반복된다.
- 각 배열의 j, j+1번을 비교하여 j+1이 더 작은 경우 j와 j+1을 교체하는 반복문을 만든다.
- 배열 정리 후 반복문을 이용하여 각 배열의 값을 출력한다.
- Kakao 알고리즘 문제.
- 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3"
- 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 숫자 영단어 0 zero 1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine
package quest03;
import java.util.Scanner;
public class Step03 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
char[] kakao = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
kakao[i] = str.charAt(i);
}
String[] spell = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
for (int i = 0; i < 10; i++) {
for (int j = 0; j < kakao.length - spell[i].length() + 1; j++) {
if (numberChange(kakao, spell[i], j)) {
for (int k = 0; k < spell[i].length(); k++) {
if (k == 0) {
kakao[j] = (char)(i+'0');
} else {
kakao[j + k] = 'a';
}
}
}
}
}
for (int i = 0; i < str.length(); i++) {
if (kakao[i] == 'a') {
continue;
} else {
System.out.print(kakao[i]);
}
}
}
public static boolean numberChange(char[] Arr, String str, int t) {
char[] chars = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
chars[i] = str.charAt(i);
}
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (Arr[i + t] == chars[i]) {
count++;
}
}
if (count == str.length()) {
return true;
} else {
return false;
}
}
}
A
- 문자열을 받아서 저장하고, char배열에 각 문자열의 내용을 저장한다.
- 문자열 배열 spell을 선언하고 0~9까지의 숫자 영문으로 초기화한다.
- char배열, 문자열, int를 받아서 boolean으로 출력하는 메소드를 만든다.
- char 배열을 새로 만들고 문자열의 각 char 값을 대입한다.
- 반복문을 만들고 문자열의 길이만큼 반복하도록 한다.
- 메소드로 받은 char 배열의 i+t번째 와 문자열을 분해한 char배열의 i번째가 반복문 모두에서 일치한 경우 true, 아닐 경우 false를 return하는 반복문을 만든다. int count를 이용하여 반복 회수에 맞춰 일치했는지 체크하도록 한다.
- 0~9까지의 반복문을 만든다.
- 입력받은 값을 저장한 char배열 길이와 각 숫자의 길이를 고려해 반복 회수가 바뀌는 반복문을 만들고, 내부에 메소드를 조건으로 하는 조건문을 작성한다.
- 조건이 true일 경우 해당 부분의 첫 char 값을 0~9까지의 값으로 지정하고, 나머지는 ‘a’로 대입하는 반복문을 만든다.
- 모든 영문 숫자를 변환한 후 반복문을 만들어 ‘a’를 제외한 숫자 부분만을 출력하도록 하는 반복문을 만든다.
- 배열 A와 배열B를 다음 그림을 참고하여 생성하고 , 배열의 합 구하기.
package quest03;
public class Step04 {
public static void main(String[] args) {
int[] intArr1 = { 3, -1, 2, 4 };
int[] intArr2 = { 2, 1, -3, 2 };
int[] arrAPlusB = new int[4];
for (int i = 0; i < intArr1.length; i++) {
arrAPlusB[i] = intArr1[i] + intArr2[i];
System.out.print(arrAPlusB[i] + " ");
}
}
}
A
- 일반적인 배열의 덧셈은 각 자리의 숫자를 서로 더하여 표시한다.
- 결과를 받을 배열을 선언하고 초기화한다.
- 반복문을 만들어 각 배열의 같은 자리의 값을 더하여 새로 만든 배열에 대입하고 출력한다.
'과제' 카테고리의 다른 글
231107 - Java mini project : 쇼핑몰 만들기 (0) | 2023.11.07 |
---|---|
Oracle 조회 점검 과제 (1) | 2023.10.26 |