오늘 배운 기초 문법 ✍
int[] [배열 이름] = { 20, 34, 6, 1231 }
배열의 크기 : [배열 이름].length
입력받기 : Scanner [객체 이름] = new Scanner(System.in);
1) 문자 입력 받기 : String [변수 이름] = [객체 이름].nextLine();
2) 숫자 입력 받기 : int [변수 이름] = [객체 이름].nextInt();
기초 문법을 활용한 문제 풀이 💻
public class Ex01 {
public static void main(String[] args) {
// 1. 총합을 저장하기 위한 변수를 만든다.
// 2. i가 1부터 100까지 1씩 증가하면서 반복한다.
// 3. 총합에 i를 더해서 저장한다.
int totalNum = 0;
for(int i=1; i<=100; i++) {
totalNum += i;
}
System.out.println("총합 : " + totalNum);
}
}
public class Ex02 {
public static void main(String[] args) {
// 1. 홀수의 총합을 저장하기 위한 변수를 만든다.
// 2. i가 1부터 100까지 1씩 증가하면서 반복한다.
// 3. 만약에 i가 홀수라면
// 4. 총합에 i를 더하여 저장한다.
int totalNum = 0;
for(int i=1; i<=100; i++) {
if(i % 2 != 0) {
totalNum += i;
}
}
System.out.println("홀수 총 합 : " + totalNum);
}
}
import java.util.Scanner;
public class Ex03 {
public static void main(String[] args) {
// 1. 숫자를 입력받기 위한 스캐너를 만든다.
// 2. 숫자를 입력받을 크기가 6인 배열을 만든다.
// 3. i가 0부터 5까지 반복한다.
// 4. 배열의 반복 횟수 번째에 숫자를 입력받아서 배열에 저장한다.
// 5. i가 5부터 0까지 반복한다.
// 6. 배열의 반복 횟수 번째에 해당하는 숫자를 출력한다.
Scanner sc = new Scanner(System.in);
int[] input = new int[6];
for(int i=0; i<6; i++) {
System.out.print("6개의 숫자를 입력하세요 : ");
input[i] = sc.nextInt();
}
System.out.print("입력받은 숫자를 거꾸로 출력하면 : ");
for(int i=5; i>=0; i--) {
System.out.print(input[i] + " ");
}
}
}
import java.util.Scanner;
public class Ex04 {
public static void main(String[] args) {
// 1. 숫자를 입력받기 위한 스캐너를 만든다.
// 2. 숫자를 입력받을 크기가 10인 배열을 만든다.
// 3. i가 0부터 9까지 반복한다.
// 4. 배열의 반복 횟수 번째에 숫자를 입력받아서 배열에 저장한다.
// 5. 입력받은 숫자의 총합을 저장할 변수를 생성한다.
// 6. i가 0부터 9까지 반복한다.
// 7. 총합을 저장할 변수에 배열의 모든 값을 더해서 저장한다.
// 8. 총합을 배열의 크기만큼 나눈 숫자를 출력한다.
Scanner sc = new Scanner(System.in);
int[] input = new int[10];
for(int i=0; i<10; i++) {
System.out.print("10개의 숫자를 입력하세요 : ");
input[i] = sc.nextInt();
}
int totalNum = 0;
for(int i=0; i<10; i++) {
totalNum += input[i];
}
System.out.println("평균값 : " + (totalNum / input.length));
}
}
public class Ex05 {
public static void main(String[] args) {
// 1. 숫자를 저장할 크기가 10인 배열을 만든다.
// 2. i가 0부터 9까지 반복한다.
// 3. 배열의 반복 횟수 번째에 1 ~ 10 사이에 있는 랜덤한 숫자를 생성하여 저장한다.
// 4. 숫자의 총합을 저장할 변수를 생성한다.
// 5. i가 0부터 9까지 반복한다.
// 6. 총합을 저장할 변수에 배열의 모든 값을 더해서 저장한다.
// 7. 총합을 저장한 변수를 출력한다.
int[] input = new int[10];
for(int i=0; i<10; i++) {
input[i] = (int)(Math.random()*10) + 1;
}
int totalNum = 0;
for(int i=0; i<10; i++) {
totalNum += input[i];
}
System.out.println("총합 : " + totalNum);
}
}
import java.util.Scanner;
public class Ex06 {
public static void main(String[] args) {
// 1. 숫자를 입력받기 위한 스캐너를 만든다.
// 2. 월 ~ 일 까지 요일을 저장할 배열을 만들고 만든 배열에 저장한다.
// 3. 숫자를 입력받을 변수를 생성한다.
// 4. 숫자를 입력받아 생성한 변수에 저장한다.
// 5. 만약에 입력받은 숫자가 0 이상이고 6 이하라면
// 6. 배열에 입력받은 숫자번째 값을 출련한다.
// 7. 그렇지 않으면
// 8. "잘못 입력하셨습니다" 를 출력한다.
Scanner sc = new Scanner(System.in);
String[] week = {"월","화","수","목","금","토","일"};
System.out.print("1 ~ 6 사이 숫자를 입력하세요 : ");
int num = sc.nextInt();
if(num >= 0 && num <=6) {
System.out.println(week[num]);
} else {
System.out.println("잘못 입력하셨습니다.");
}
}
}
import java.util.Scanner;
public class Ex07 {
public static void main(String[] args) {
int[] unit = {50000, 10000, 5000, 1000, 500, 100, 50, 10, 1};
// 1. 각 화폐의 개수를 저장할 count 배열을 생성한다.
// 2. 돈을 입력받기 위한 스캐너를 만든다.
// 3. 돈을 입력받을 변수를 생성한 후 입력받은 돈을 변수에 저장한다.
// 4. i가 0부터 unit 배열의 크기만큼 반복한다.
// 5. count 배열에 입력받은 돈을 각 화폐 단위로 나눴을때 몫을 저장한다.
// 6. 입력받은 돈은 이전 화폐 단위로 나눴을때의 나머지로 다시 저장한다.
// 7. 각 화폐 단위별 개수를 출력한다.
int[] count = new int[unit.length];
Scanner sc = new Scanner(System.in);
System.out.print("돈을 입력하세요 : ");
int input = sc.nextInt();
for(int i=0; i<unit.length; i++) {
count[i] = input / unit[i];
input %= unit[i];
}
System.out.println("50000원 권 : " + count[0] + "개");
System.out.println("10000원 권 : " + count[1] + "개");
System.out.println("5000원 권 : " + count[2] + "개");
System.out.println("1000원 권 : " + count[3] + "개");
System.out.println("500원 동전 : " + count[4] + "개");
System.out.println("100원 동전 : " + count[5] + "개");
System.out.println("50원 동전 : " + count[6] + "개");
System.out.println("10원 동전 : " + count[7] + "개");
System.out.println("1원 동전 : " + count[8] + "개");
}
}
public class Ex08 {
public static void main(String[] args) {
// 1. 6개의 로또 번호를 저장할 새로운 배열을 만든다.
// 2. i가 0부터 6까지 반복한다.
// 3. 생성한 배열에 1 ~ 45 범위 중 랜덤하게 6개의 숫자를 생성하여 저장한다.
// 4. i가 0부터 6까지 반복한다.
// 5. j가 0부터 i보다 작은 수까지 반복한다.
// 6. 만약 i 인덱스 숫자와 j 인덱스 숫자가 같으면 다시 반복한다.
// 7. 모든 조건을 만족하면 while 반복문을 빠져나온다.
// 8. 저장된 6개의 숫자를 출력한다.
int[] lotto = new int[6];
boolean flag = true;
while(flag) {
flag = false;
for(int i=0; i<6; i++) {
lotto[i] = (int)(Math.random()*45) + 1;
}
for(int i=0; i<6; i++) {
for(int j=0; j<i; j++) {
if(lotto[j] == lotto[i]) {
flag = true;
}
}
}
}
System.out.print("이번주 로또번호 : ");
for(int i=0; i<6; i++) {
System.out.print(lotto[i] + " ");
}
}
}
오늘의 느낀점 👀
오늘은 어제와 오늘 배운 기초 문법들을 활용하여 문제들을 여러개 풀어보았다. 어제는 문제 풀때 많이 헤맸었는데, 확실히 프로그래머스 문제도 풀어보고 하다 보니, 살짝 감이 왔는지 순조롭게 문제를 풀 수 있었다.✌
위 문제중 못 푼 문제는 마지막 "로또 번호 생성 문제" 였다. 내가 헤맨부분은 중복된 값을 출력하지 않는 부분이었다.😵💫 내가 헤매고 있으니, 옆에 앉은 나의 짝이 내가
풀 수 있도록 가이드를 제시해줬다.
좋았던 점은, 바로 답을 알려주지 않고 계속해서 내가 풀어 나갈 수 있도록 질문을 던져주셨다. 그 결과 위의 코드를 짜게 되었는데, 핵심은❗ 반복문과 조건문을 사용함에 있어서 그 코드의 구동원리만 잘 알고 있다면, 무한 반복문을 생성하고 언제든지 자유롭게 내가 원할때 반복문으로부터 탈출 할 수 있어야 된다는 것이었다.
그렇게 고민하다 보니, Boolean
타입에 대한 깨달음도 얻을 수 있었다. 문제를 풀면서 Boolean
타입을 사용할 곳이 없어서 단순히 개념 수준으로만 알고 있었는데, 이번 기회에 정확하게 알 수 있었다.
물론 내가 작성한 답이 가장 좋은 코드라고 말할 수는 없겠으나, 오늘 학습한 내용만 활용하면 반복문을 내가 원하는대로 자유자재로 사용하는 것이 가능하므로 큰 문제는 없다고 생각한다.
자바는 객체지향 언어라는 말처럼 학습함에 있어서 가장 중요한 것은 위의 예시문제들에 적어둔 문제 풀이 순번처럼 한글로 내가 원하는 내용을 먼저 정리하는 것 같다.
잘 정리되고, 실행 순서가 완벽하게 이해된다면 그것을 프로그래밍 언어로 구현하는 것은 그리 어려운 일은 아닐것이라 생각한다.🧐