항해99

23.08.24 항해 99 16기 프로그래밍 기초2 6일차

김용글 2023. 8. 24. 22:52

오늘 공부한 것

* 주간 시험

* 주간 시험 문제 풀기

* 팀과제였던 숫자야구를 솔리드 5원칙에 맞게 수정해보기

* Spring 맛보기

 

어김없이 주간시험의 날이 밝았다

 

1점, 2점, 3점 짜리 문제를 풀어서

총점 3점이상이면 합격이었다

 

난 겨우겨우 1점과 2점문제를 풀어서 합격할 수 있었다

다만 문제3을 풀지 못했는데

이건 꼭 풀어봐야겠다!

 

문제1에서는 임의의 배열 크기를 선언하는 부분에서 좀 헤맸다

두 행렬의 행과 열이 같지 않을 수도 있어서 필요한 부분이었다

문제1 행렬 음양 더하기
행렬이 두개 있습니다. 두 행렬의 절댓값을 차례대로 담은 정수 배열 arr1, arr2와 행렬의 부호를 차례대로 담은 불리언 
배열 signs가 매개변수로 주어집니다. 두 행렬의 부호는 같습니다. 배열의 길이는 같습니다.    //
실제 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
public class test1 {
public int[][] solution(int[][] arr1, int[][] arr2, boolean[][] signs) {
        int[][] answer = new int[arr1.length][arr1[0].length]; // 임의로 배열의 크기를 다시 선언
        for (int i=0; i < arr1.length; i++){ // 행 길이 만큼 반복
            for (int j=0; j < arr1[0].length; j++){ // 열 길이 만큼 반복
                if (signs[i][j]) {
                    answer[i][j] = arr1[i][j] + arr2[i][j];
                } else {
                    answer[i][j] = -arr1[i][j] + -arr2[i][j];
                }
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        test1 method = new test1();
        int[][] arr1 = {{5,7,1},{2,3,5}};
        int[][] arr2 = {{5,1,6},{7,5,6}};
        boolean[][] signs={{true,true,false},{false,true,false}};
        System.out.println(Arrays.deepToString(method.solution(arr1, arr2, signs)));
    }
 }

 

문제2는 역삼각형 부분이 어려웠다

제대로는 나오게했는데 어떻게 해야 역으로도 나오는지 고민이 많았다

또한 공백 부분 처리도 처음해보는 것이었어서 구글링하여 겨우 찾았다

문제2 Triangular Output
첫째 줄에 정수 n이 주어진다. (0≤n≤100)
public class test2 {
public void solution(int star) {
// 역삼각형
for (int i=star; i >= 1; i--){ // i는 별 줄의 개수
    for (int j=0; j <star -i; j++){
System.out.print(" "); // 현재 행의 위치에 맞는 공백 출력
}
    for (int k = 1; k <= i*2-1; k++){ // 현재 행의 위치에 맞는 별 출력
System.out.print("*");
}
System.out.println();
}

// 삼각형
for (int i = 2; i <= star; i++){
    for (int j= 1; j <= star -i; j++){ // 현재 행의 위치에 맞는 공백 출력
System.out.print(" ");
}
    for(int k = 0; k<i*2-1; k++){ // 현재 행의 위치에 맞는 별 출력
System.out.print("*");
}
System.out.println();
}
}
 
public static void main(String[] args) {
test2 method = new test2();
int star = 7;
method.solution(star);
}
}
 

 

이후 기술매니저님이 오셔서 

내일부터 시작할 주특기 Spring에 대해 간단히 설명해 주셨다

 

스프링 : 자바 기반으로 만들어진 프레임 워크

프레임워크 : 라이브러리 + 설계도
                      예) 의자를 만들 수 있는 공방

라이브러리 : 필요할때 자유롭게 사용할 수 있는 도구
                      예) 망치, 못 등
    
레이어드 아키택쳐 : 계층에 따라 구조를 나눠놓음
                                 기능에 따라 레이어를 나눔
                                 프레젠테이션 : 실질적으로 클라이언트에게 요청받고 응답
                                 비지니스 : 실질적으로 로직을 처리
                                 데이터엑세스 : DB랑 커넥션
                                 1) MVC 패턴 
                                     모델 : 데이터와 관련 (비지니스레이어, 데이터엑세스 엑세스와 관련됨)
                                     뷰    : 사용자에게 보여주는 (프리젠테이션 레이어)
                                     컨트롤러 : (프리젠테이션 레이어)