inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

코드 리뷰 부탁드립니다!

377

Woo Jay
1

package array;

import java.util.Scanner;

public class Ex7 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int student_count = 4;
        String[] subject = {"국어", "영어", "수학"};
        int subject_count = subject.length;
        int total_index = subject.length;
        int[][] point = new int[student_count][subject_count+1];

        for (int i = 0; i < point.length; i++) {
            System.out.println((i+1) + "번 학생의 성적을 입력하세요:");
            for (int z = 0; z < subject_count; z++){
                System.out.print(subject[z] + " 점수: ");
                point[i][z] = scanner.nextInt();
                point[i][subject_count] += point[i][z];
            }

        }

        for (int i = 0; i < point.length; i++){
            System.out.println((i+1) + "번 학생의 총점:" + point[i][total_index ] +", 평균: " + ((double) point[i][total_index ]/subject_count));
        }
    }
}

안녕하세요. 배열 문제 풀이 2, 2차원 배열1 문제에서

선생님과 다른 풀이 방법으로 접근해보았습니다.

기존 4x3 대신 칼럼을 하나 더 추가해 마지막 칼럼을 총점수를 저장하는 방법을 사용하였습니다.

의도는 이러합니다.
- 필요에 따라 학생수와 과목수를 추가함에 따라 for문을 변경하지 않아도 되도록 하고싶었습니다.
- 칼럼을 하나 더 추가해 마지막 칼럼에 총점을 저장하는 방식을 사용하고 싶었습니다.
- 확장성과 유지 보수 측면에서 좀 더 간편했으면 싶었습니다.

여기서 발생한 문제점은 다음과 같습니다.
- 개인적으로 느끼기엔 가독성이 선생님의 코드보다 떨어져보인다.
- 가독성을 높이기 위해 선언한 변수가 비효율적이다. (int total_index = subject.length;)

total_score[] 배열을 하나 더 만들어서 저장하는게 더 나을까요?
제 아이디어와 코드가 어떤지 리뷰를 들어보고 싶습니다!

java 객체지향 배열

답변 1

0

y2gcoder

안녕하세요. Woo Jay님, 공식 서포터즈 y2gcoder입니다.

 

한 배열에 각 과목의 점수와 총점을 같이 저장하기 위해 고민하신 결과물이라 생각합니다 🙂

말씀해주신 대로 배열에 계산 결과까지 같이 저장하면 총점 계산 시 바로 결과를 호출할 수 있다는 장점이 있을 것 같습니다!

다만 상황에 따라 다르겠지만 저는 해당 데이터를 저장하는 배열에 계산 로직 결과 또한 들어가는 것이 유지보수하기 더 좋은가? 에 대한 고민이 들 것 같습니다!

  • 총점을 보여줄 필요가 없고 전체 과목에 대한 평균 점수를 보여줘야 한다면?

위와 같은 요구사항이 생겼을 때, 지금은 각 과목 점수가 들어간 배열을 수정해야 할 것 같습니다! 계산 로직만 따로 분리해뒀을 때는 나중에 위와 같은 요구사항이 생겼을 때 데이터가 들어간 배열은 수정할 필요 없이 계산 로직만 추가/수정/제거하면 된다는 점을 생각해볼 수 있을 것 같습니다!

  • 한 학생의 과목 점수를 잘못 입력했기 때문에 정정해줘야 한다면?

계산로직이 따로 있을 때는 데이터 배열에 들어간 과목 점수만 변경해주면 됩니다. 하지만 계산 결과가 같이 있는 배열에서는? 최소한 추가적으로 그 학생의 과목점수를 변경하는 기능 외에, 총점을 다시 계산해서 넣어주는 로직 또한 존재해야 할 것 같습니다!

 

감사합니다.

방산 SW 개발자가 되기 위한 조언을 부탁드립니다!

1

68

1

JAVA로 백엔드 프로젝트

0

61

1

26년1회 실기 합격할수 있을까??ㅠㅠ

0

174

1

자바 실무 단계

0

311

2

Desktop용 게임 개발에도 도움이 될까요?

0

201

1

진로가 큰 걱정입니다...

0

298

1

공부 방향

0

318

1

안녕하세요! 실무와 관련되서 질문드립니다!

0

334

1

함수형 인터페이스 활용

0

356

1

WebFlux를 실무에 적용하기 전에 고민이 있습니다.

0

303

0

코딩테스트 준비

0

467

1

공부하다 진도를 못 나가고 있어요 ㅜㅜ

0

408

1