📚 자바 반복문 기초 문제 풀이
🔹 1. 1부터 100까지 숫자 출력하기
public class PrintNumbers {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
System.out.print(i + " ");
}
}
}
📌 설명:
- for 반복문을 사용하여 i가 1부터 100까지 증가합니다.
- 각 숫자를 출력합니다.
🔹 2. 1부터 100까지 짝수만 출력하기
public class PrintEvenNumbers {
public static void main(String[] args) {
for (int i = 2; i <= 100; i += 2) {
System.out.print(i + " ");
}
}
}
📌 설명:
- i를 2부터 시작해 2씩 증가시키며 짝수만 출력합니다.
🔹 3. 1부터 100까지 숫자의 합 구하기
public class SumNumbers {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1부터 100까지의 합: " + sum);
}
}
📌 설명:
- sum 변수에 각 숫자를 누적합합니다.
- 반복문 종료 후 결과를 출력합니다.
🔹 4. 팩토리얼 계산하기
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
int factorial = 1;
for (int i = 1; i <= n; i++) {
factorial *= i;
}
System.out.println(n + "! = " + factorial);
}
}
📌 설명:
- Scanner로 사용자 입력을 받습니다.
- for문으로 1부터 n까지 곱하여 팩토리얼을 계산합니다.
- 결과를 출력합니다.
🔹 5. N단 구구단 출력하기
import java.util.Scanner;
public class MultiplicationTable {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("출력할 구구단의 단(N)을 입력하세요: ");
int n = scanner.nextInt();
System.out.println(n + "단 구구단:");
for (int i = 1; i <= 9; i++) {
System.out.println(n + " × " + i + " = " + (n * i));
}
}
}
📌 설명:
- Scanner로 사용자로부터 단(N)을 입력받습니다.
- for 반복문으로 1부터 9까지 곱셈을 수행하여 구구단을 출력합니다.
📚 자바 반복문 중급 문제 풀이
🔹 1. 100부터 1까지 역순으로 출력하기
public class ReverseNumbers {
public static void main(String[] args) {
for (int i = 100; i >= 1; i--) {
System.out.print(i + " ");
}
}
}
📌 설명:
- for 반복문을 사용해 i를 100부터 시작하여 1씩 감소시키며 출력합니다.
🔹 2. 소수 판별하기
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
boolean isPrime = true;
if (n <= 1) {
isPrime = false; // 1 이하는 소수가 아님
} else {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime) {
System.out.println(n + "은(는) 소수입니다.");
} else {
System.out.println(n + "은(는) 소수가 아닙니다.");
}
}
}
📌 설명:
- Scanner로 입력받은 숫자 n이 1 이하이면 소수가 아님.
- 2부터 √n까지 나누어 떨어지는지 검사.
- 하나라도 나누어 떨어지면 isPrime을 false로 설정.
🔹 3. 숫자 피라미드 출력하기
import java.util.Scanner;
public class NumberPyramid {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j);
}
System.out.println();
}
}
}
📌 설명:
- 첫 번째 for문: 행을 나타냄 (i)
- 두 번째 for문: 각 행에서 1부터 i까지 숫자 출력
- 한 행이 끝나면 System.out.println()으로 줄바꿈
✅ 출력 예시 (N=4):
1
12
123
1234
🔹 4. 별 찍기 (삼각형)
import java.util.Scanner;
public class StarTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
📌 설명:
- 첫 번째 for: 행(i)을 반복
- 두 번째 for: i번째 행에서 i개의 * 출력
- 각 행이 끝날 때마다 줄바꿈
✅ 출력 예시 (N=4):
*
**
***
****
🔹 5. 별 찍기 (역삼각형)
import java.util.Scanner;
public class ReverseStarTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
for (int i = n; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
📌 설명:
- 첫 번째 for: 행(i)이 n부터 1까지 감소
- 두 번째 for: i개의 *를 출력
- 각 행이 끝날 때마다 줄바꿈
✅ 출력 예시 (N=4):
****
***
**
*
✅ 코드 요약
1️⃣ 100부터 1까지 출력: for문에서 i-- 사용
2️⃣ 소수 판별: Math.sqrt를 사용한 효율적인 소수 판별
3️⃣ 숫자 피라미드: 중첩 for문 사용
4️⃣ 별 삼각형: 행마다 * 개수 증가
5️⃣ 별 역삼각형: 행마다 * 개수 감소
📚 자바 반복문 고급 문제 풀이
🔹 1. 피보나치 수열 출력하기
N개의 피보나치 수열을 출력하세요. (예: N=5 → 0, 1, 1, 2, 3)
import java.util.Scanner;
public class FibonacciSequence {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("출력할 피보나치 수열의 항 수(N)를 입력하세요: ");
int n = scanner.nextInt();
int a = 0, b = 1;
System.out.print("피보나치 수열: " + a);
for (int i = 1; i < n; i++) {
System.out.print(", " + b);
int temp = b;
b = a + b;
a = temp;
}
}
}
📌 설명:
- 두 변수 a, b를 사용하여 피보나치 수열을 생성.
- a와 b를 반복문에서 교체하면서 다음 항을 계산.
피보나치 수열: 0, 1, 1, 2, 3
🔹 2. 숫자 뒤집기
사용자로부터 숫자 N을 입력받아 숫자를 뒤집어 출력하세요.
import java.util.Scanner;
public class ReverseNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
int reversed = 0;
while (n != 0) {
int digit = n % 10;
reversed = reversed * 10 + digit;
n /= 10;
}
System.out.println("뒤집은 숫자: " + reversed);
}
}
📌 설명:
- n % 10으로 마지막 자릿수를 추출.
- reversed에 자릿수를 추가하며 역순으로 숫자를 재배치.
- n /= 10으로 마지막 자릿수를 제거.
뒤집은 숫자: 321
🔹 3. 완전수 판별하기
완전수(perfect number)인지 판별하세요. (예: 6은 1, 2, 3의 합이므로 완전수입니다.)
import java.util.Scanner;
public class PerfectNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
int sum = 0;
for (int i = 1; i <= n / 2; i++) {
if (n % i == 0) {
sum += i;
}
}
if (sum == n && n != 0) {
System.out.println(n + "은(는) 완전수입니다.");
} else {
System.out.println(n + "은(는) 완전수가 아닙니다.");
}
}
}
📌 설명:
- for문으로 1부터 n/2까지의 약수를 구해 sum에 더함.
- sum이 n과 같다면 완전수로 판별.
6은(는) 완전수입니다.
🔹 4. 별 찍기 (다이아몬드)
사용자로부터 숫자 N(홀수)을 입력받아 다이아몬드 모양을 출력하세요.
import java.util.Scanner;
public class DiamondPattern {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N(홀수)을 입력하세요: ");
int n = scanner.nextInt();
// 위쪽 삼각형
for (int i = 1; i <= n; i += 2) {
for (int j = 0; j < (n - i) / 2; j++) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
// 아래쪽 삼각형
for (int i = n - 2; i >= 1; i -= 2) {
for (int j = 0; j < (n - i) / 2; j++) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
📌 설명:
- 위쪽 삼각형: 공백과 *를 적절히 조정하여 출력.
- 아래쪽 삼각형: 공백과 *를 역순으로 출력.
*
***
*****
***
*
🔹 5. 숫자 합 구하기
사용자로부터 숫자 N을 입력받아 각 자리 숫자의 합을 구하세요. (예: N=123 → 1+2+3=6)
import java.util.Scanner;
public class SumOfDigits {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
int sum = 0;
while (n != 0) {
sum += n % 10;
n /= 10;
}
System.out.println("각 자리 숫자의 합: " + sum);
}
}
📌 설명:
- n % 10으로 마지막 자릿수를 추출해 sum에 더함.
- n /= 10으로 마지막 자릿수를 제거.
각 자리 숫자의 합: 6
✅ 코드 요약
1️⃣ 피보나치 수열: 두 변수를 사용해 수열 생성.
2️⃣ 숫자 뒤집기: while 반복문으로 숫자 뒤집기.
3️⃣ 완전수 판별: 약수의 합으로 완전수 판별.
4️⃣ 다이아몬드 별 찍기: 위아래 삼각형을 조합.
5️⃣ 숫자 합 구하기: 각 자리 숫자를 합산.
🔹 챌린지 문제
- 사용자로부터 숫자 N을 입력받아 위와 같은 마름모 숫자를 출력하세요.
📚 자바 반복문 챌린지 문제 풀이
🔹 1. 최대공약수(GCD) 구하기
- 두 정수 N, M의 최대공약수를 구하세요.
import java.util.Scanner;
public class GCD {
public static int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 숫자 N을 입력하세요: ");
int n = scanner.nextInt();
System.out.print("두 번째 숫자 M을 입력하세요: ");
int m = scanner.nextInt();
System.out.println("최대공약수(GCD): " + gcd(n, m));
}
}
📌 설명:
- 유클리드 호제법을 사용하여 최대공약수를 구함.
- a % b의 결과를 새로운 b로 대체하고 반복.
✅ 출력 예시:
첫 번째 숫자 N을 입력하세요: 56
두 번째 숫자 M을 입력하세요: 98
최대공약수(GCD): 14
🔹 2. 자리수 정렬 (내림차순)
- 사용자로부터 숫자 N을 입력받아 각 자리 숫자를 내림차순으로 정렬하세요.
(예: N=325 → 532)
import java.util.Scanner;
import java.util.Arrays;
import java.util.Collections;
public class DigitSort {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
String n = scanner.next();
Character[] digits = new Character[n.length()];
for (int i = 0; i < n.length(); i++) {
digits[i] = n.charAt(i);
}
Arrays.sort(digits, Collections.reverseOrder());
System.out.print("내림차순 정렬: ");
for (char digit : digits) {
System.out.print(digit);
}
}
}
📌 설명:
- 문자열로 입력받아 각 문자를 배열에 저장.
- Arrays.sort와 Collections.reverseOrder로 내림차순 정렬.
- 정렬된 배열을 출력.
✅ 출력 예시:
숫자 N을 입력하세요: 325
내림차순 정렬: 532
🔹 3. 1부터 N까지 소수 출력하기
- 사용자로부터 숫자 N을 입력받아 1부터 N까지의 모든 소수를 출력하세요.
import java.util.Scanner;
public class PrimeNumbers {
public static boolean isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요: ");
int n = scanner.nextInt();
System.out.println("1부터 " + n + "까지의 소수:");
for (int i = 1; i <= n; i++) {
if (isPrime(i)) {
System.out.print(i + " ");
}
}
}
}
📌 설명:
- isPrime 메서드로 소수 여부를 판별.
- 1부터 n까지 반복하여 소수만 출력.
✅ 출력 예시:
숫자 N을 입력하세요: 10
1부터 10까지의 소수: 2 3 5 7
🔹 4. 2차원 배열 별 출력 (겉만 별)
- N x N의 겉만 별(*)로 채워진 사각형을 출력하세요.
import java.util.Scanner;
public class HollowSquare {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N을 입력하세요 (NxN 사각형): ");
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == 0 || i == n - 1 || j == 0 || j == n - 1) {
System.out.print("* ");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
📌 설명:
- 첫 번째와 마지막 행(i == 0 or i == n-1)은 모두 *.
- 첫 번째와 마지막 열(j == 0 or j == n-1)은 모두 *.
- 나머지는 공백으로 출력.
✅ 출력 예시 (N=4):
* * * *
* *
* *
* * * *
🔹 5. 마름모 숫자 출력
import java.util.Scanner;
public class DiamondNumbers {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("숫자 N(홀수)을 입력하세요: ");
int n = scanner.nextInt();
int mid = n / 2;
// 위쪽 마름모
for (int i = 0; i <= mid; i++) {
for (int j = 0; j < mid - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (2 * i + 1); j++) {
System.out.print(j);
}
System.out.println();
}
// 아래쪽 마름모
for (int i = mid - 1; i >= 0; i--) {
for (int j = 0; j < mid - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (2 * i + 1); j++) {
System.out.print(j);
}
System.out.println();
}
}
}
📌 설명:
- 위쪽: 공백과 숫자 출력.
- 아래쪽: 위쪽을 역순으로 출력.
- mid를 기준으로 상/하 대칭 구조.
✅ 출력 예시 (N=5):
1
123
12345
123
1
✅ 코드 요약
1️⃣ 최대공약수: 유클리드 호제법 사용
2️⃣ 자리수 정렬: 문자열 배열 정렬
3️⃣ 소수 출력: isPrime 메서드 사용
4️⃣ 2차원 배열 별: 겉만 별 출력
5️⃣ 마름모 숫자: 공백과 숫자 조합
'자바 (JAVA)' 카테고리의 다른 글
📚 자바 배열 연습문제 (0) | 2025.01.07 |
---|---|
📚 Java 12+ Switch Expression(표현식) 사용법 (0) | 2025.01.07 |
📚 자바 조건문 연습문제 (0) | 2025.01.06 |
📚JAVA 12강: JDBC (Java Database Connectivity) (0) | 2025.01.03 |
📚 JAVA 11강: 스레드(Thread) (1) | 2025.01.03 |