분류 전체보기 212

1992번 - 쿼드트리 (C++)

[문제] https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net [풀이] 이전 문제와 똑같이 재귀함수로 푸는 문제이다. vector를 이용하여 쿼드트리를 저장하였음. test함수에서 모두 0, 1로 되어있는지 판단하고, 아니면 false, 맞으면 true 값을 반환하였다. true인 경우 1 혹은 0을 벡터에 넣어 쿼드 트리 완성, 괄호는 재귀함수에 넣을때 같이 벡터에 넣어주었고 숫자 사이에 괄호를 없애서 문제를 풀었다. [코드] #inc..

2630번 - 색종이 만들기 (C++)

[문제] https://www.acmicpc.net/problem/2630 [해결 방법] 우선 void check(int x, int y, int N) 함수를 정의하여, 재귀 함수를 통해 풀려고 하였다. (x, y는 판 내 좌표, N은 전체 종이의 크기) 첫번째로, 일단 (0,0) 좌표와 사용자에게 입력받은 N(그림에서는 8)을 check 함수에 인자로 전달하였다. 그리고 for문을 통해서 check(x,y,N/2)를 통해 (그림 내에서) 8 X 8 -> 4 X 4 -> 2 X 2 -> 1 X 1 이런식으로 분할하려고 하였다. bool test(int x, int y, int N) 은 주어진 좌표에서 (x,y) ~(가로 + N, 세로 + N) 만큼 범위에서 같은 수 인지 아닌지 파악하는 함수이다. 만약 ..

좋은 객체 지향 설계의 원칙(SRP/DIP/OCP)

SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 클라이언트 객체는 실행하는 책임만 담당해야 한다. DIP 의존관계 역전 원칙 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다. 의존성 주입은 이 원칙을 따르는 방법 중 하나다. -> AppConfig를 이용하여 객체 인스턴스를 클라이언트 코드 대신 생성하여, 클라이언트 코드에 의존관계를 주입함. OCP 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성 사용, 클라이언트가 DIP를 지킴 애플리케이션을 사용 영역과 구성 영역으로 나눔 소프트웨어 요소를 새롭게 확장해도 사용 영역의 변경은 닫혀 있다.

💻 Backend 2021.12.27

TIL - 2021/12/27

인텔리제이에서 F2키를 누르면 오류난 곳으로 이동할 수 있음. Enum type은 ==을 써도 된다. 단일책임원칙(single responsibility principle)이란 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다. 클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합해야 한다. psvm = public static void main 단축키 무조건 개발은 역할, 구현 필수 (객체지향) -> interface, class 메인 메소드보다 테스트가 중요 프리미티브 타입은 null은 넣을수가 없음 Assertions.assertThat(order.getDiscountPrice()).isequalTo // 할인 확인 단일 테스트가 수천개가 있어도 -> 몇초..

💻 Backend/TIL 2021.12.27

회원 도메인과 리포지토리 만들기 - 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

멤버 레포지토리 패키지에 MemberRepository Interface를 생성하고, MemoryMemberRepository.class에서 MemberRepository의 Interface를 implements하여, 구현하였다. 메모리 구현체 예시 package hello.hellospring.repository; import hello.hellospring.domain.Member; import java.util.*; public class MemoryMemberRepository implements MemberRepository{ private static Map store = new HashMap(); private static long sequence = 0L; @Override public M..

💻 Backend 2021.12.18

인텔리제이(IntelliJ) 단축키 정리

스프링 강의를 듣는 도중 좋은 단축키가 많이 나오길래, 단축키를 정리해보았다. getter/setter 단축키 - Alt + Insert 이동 줄이동 Alt + Shift + ↑↓ 한줄 아래로 복붙 Ctrl + d 코드 한 줄 삭제 Ctrl + y 파일 가장 위, 아래로 이동 Ctrl + Home, End 자동완성 괄호안에서 ;로 코드완성하기 Ctrl + Shift + Enter 변수 추출하기 Ctrl + Alt + v 생성자,Getter와Setter,메서드 오버라이딩 자동완성 Alt + Insert 자바클래스 main메서드 자동생성 main + Tab System.out.println(); 자동완성 메인메서드안에서 sout + Tab System.out.printf(“”); 자동완성 메인메서드안에서 s..

💻 Backend 2021.12.18

정적 컨텐츠 / MVC와 템플릿 엔진 / API 란? - 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

오늘은 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣고 정적컨텐츠, MVC와 템플릿 엔진, API에 대해서 정리해보고자 한다. 1. 정적 컨텐츠(서버에서 파일을 그대로 웹브라우저에 전달) 정적 컨텐츠란, 서버에서는 파일을 그대로 웹 브라우저에 보내 주는 방식을 의미한다. 이전에 설명한 Welcome Page와 같다고 볼 수 있다. 웹 브라우저에서 localhost:8080/hello-static.html 로 요청하면 내장 톰캣 서버가 해당 요청을 받는다. 톰캣 서버는 먼저 스프링 컨테이너에 hello-static.html요청이 왔음을 알린다. 스프링 부트에서는 ''컨트롤러''가 우선순위가 있기 때문에, 가장 먼저 컨트롤러 중에 hello-static.htm..

💻 Backend 2021.12.18