[멘토씨리즈 자바] 06 배열 응용문제

2024. 7. 21. 00:57·책/멘토씨리즈 자바

1. 다음 중 배열을 생성하는 방법으로 틀린 것은 ?

  1. int[] arr = new int[4];
  2. int arr[] = new int[4];
  3. int arr[] = {1, 2, 3, 5};
  4. int[][] arr = new int [][4];

 > 옳은 예시 - int[][] arr = new int [4][4];

2. 다음 코드의 빈칸을 완성해 주어진 배열에서 짝수만 더하여 합을 구해보세요.

public class ArrayExample {
    public static void main(String[] args) {
 
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int sum = 0;
 
        for(int i = 0; i < arr.length; i++) {
            // 빈칸 //
        }
 
        System.out.println("짝수들의 합 : " + sum);
    }
}

정답 )

더보기
더보기

if(arr[i] % 2 == 0) {
             sum += arr[i];
            }

3. 철수는 동생과 카드 게임을 했습니다. 카드 게임에 사용된 카드는 중복되는 숫자 없이 총 10장입니다. 배열과 랜덤 함수를 이용해 철수가 게임에 사용했던 카드를 구해보세요. 카드에 적힌 숫자는 1부터 10이며, 카드는 섞여있으므로 순서는 상관없습니다.

 

package section06;
 
import java.util.Arrays;
 
public class PRACTICE_06_03 {
	public static void main(String[] args) {
        int n = 10;
        int[] arr = new int[n];
        
        for (int i = 0; i < arr.length; i++) { 
        	arr[i] = (int)(Math.random() * 10 + 1); // 1 - 10까지 랜덤함수
            for (int j = 0; j < i; j++) {
            	if (arr[j] == arr[i]) { //  1-10 중에 랜덤으로 선택된 수가 중복된다면
                	i--; 
                }
            }
        }
        System.out.println(Arrays.toString(arr)); // 배열 출력
    }
}

4. 마방진은 숫자가 배열되어 있으며, 가로의 합, 세로의 합, 대각선의 합이 모두 동일하게 설계되어 있습니다. 2차원 배열을 이용해 마방진을 구현해 보세요.

 

         < 조건 >

  • 배열은 5*5로 합니다.
  • 시작 위치는 (0, 2)입니다.
  • 마방진에 들어가는 숫자는 1부터 시작합니다.
public class MagicSquare {

    public static void main(String[] args) {
        int n = 5; // 마방진의 크기 (5x5)
        int[][] magicSquare = new int[n][n]; // 마방진을 저장할 2차원 배열
        int num = 1; // 마방진에 들어갈 숫자, 1부터 시작
        int i = 0, j = 2; // 시작 위치 (0, 2)

        // 마방진 생성 로직
        while (num <= n * n) { // 마방진의 모든 칸에 숫자를 채울 때까지 반복
            magicSquare[i][j] = num; // 현재 위치에 숫자 할당
            num++; // 다음 숫자로 이동

            // 다음 위치 계산
            int i2 = (i - 1 + n) % n; // 위로 한 칸 이동 (범위를 벗어나면 n-1 위치로 이동)
            int j2 = (j + 1) % n; // 오른쪽으로 한 칸 이동 (범위를 벗어나면 0 위치로 이동)

            // 다음 위치에 이미 숫자가 할당되어 있으면 아래로 한 칸 이동
            if (magicSquare[i2][j2] != 0) {
                i = (i + 1) % n; // 아래로 한 칸 이동 (범위를 벗어나면 0 위치로 이동)
            } else {
                i = i2;
                j = j2;
            }
        }

        // 마방진 출력
        for (i = 0; i < n; i++) { // 모든 행에 대해 반복
            for (j = 0; j < n; j++) { // 한 행의 모든 열에 대해 반복
                System.out.print(magicSquare[i][j] + " "); // 숫자와 공백 출력
            }
            System.out.println(); // 한 행 출력 후 줄 바꿈
        }
    }
}

'책 > 멘토씨리즈 자바' 카테고리의 다른 글

[멘토씨리즈 자바] 08 메서드 응용문제  (1) 2024.07.21
[멘토씨리즈 자바] 07 클래스 응용문제  (0) 2024.07.21
[멘토씨리즈 자바] 05 - 제어문-2 - 응용문제  (0) 2024.07.18
[멘토씨리즈 자바] 04 - 제어문 - 1 응용문제  (0) 2024.07.18
[멘토씨리즈 자바] 03 - 연산자 응용문제  (0) 2024.07.17
'책/멘토씨리즈 자바' 카테고리의 다른 글
  • [멘토씨리즈 자바] 08 메서드 응용문제
  • [멘토씨리즈 자바] 07 클래스 응용문제
  • [멘토씨리즈 자바] 05 - 제어문-2 - 응용문제
  • [멘토씨리즈 자바] 04 - 제어문 - 1 응용문제
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    수제비
    멘토씨리즈 자바
    @repository
    생성자
    2-layered 아키텍처
    Di
    Spring
    codeup 4891 : 행복
    스프링 프레임워크
    정보처리기사 실기
    DispatcherServlet
    html
    @Component
    aop
    정처기
    이벤트 스케줄러
    recoverabledataaccessexception
    ViewResolver
    java
    티스토리챌린지
    오버로딩
    상속
    어노테이션
    오블완
    정보처리기사
    @service
    jsp
    정처기 실기
    MVC
    객체지향
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[멘토씨리즈 자바] 06 배열 응용문제
상단으로

티스토리툴바