23.08.24 항해 99 16기 프로그래밍 기초2 6일차
오늘 공부한 것
* 주간 시험
* 주간 시험 문제 풀기
* 팀과제였던 숫자야구를 솔리드 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 패턴
모델 : 데이터와 관련 (비지니스레이어, 데이터엑세스 엑세스와 관련됨)
뷰 : 사용자에게 보여주는 (프리젠테이션 레이어)
컨트롤러 : (프리젠테이션 레이어)