전체 글
-
[백준] 2206번 : 벽 부수고 이동하기 - 자바(JAVA)알고리즘/백준 2022. 4. 25. 00:01
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 문제 해석 N x M의 행렬로 표현되는 맵이 있습니다. 맵에서 0은 이동할 수 있는 곳, 1은 이동할 수 없는 벽으로 표시됩니다. (1,1)에서 (N, M)의 위치로 최단경로로 이동하려고 합니다 이때 시작하는 칸과 끝나는 칸도 포함해서 셉니다. 만약 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개까지 부수고 이동해도 됩니다. 문제..
-
테스트 코드 - 회원 관리 예제 실습(스프링 통합 테스트)테스트코드(Test Code) 2022. 4. 24. 15:26
이전에 했던 test는 순수하게 자바로 진행했지만 DB 정보들을 Spring이 가지고 있기 때문에 스프링과 함께 통합 테스트를 진행해야 합니다. 1. test/java/hello.hellospring.service 패키지에 MemberServiceIntegrationTest.java를 생성합니다. package hello.hellospring.service; import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.List; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Bef..
-
스프링 부트 - 회원 관리 예제 실습 (순수 JDBC로 H2 데이터베이스 연동)Spring Framework 2022. 4. 24. 00:01
1. build.gradle에 jdbc와 h2 데이터베이스 의존성을 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-jdbc' //추가됨 runtimeOnly 'com.h2database:h2' //추가됨 testImplementation 'org.springframework.boot:spring-boot-starter-test' } 2. src/main/reso..
-
[백준] 10158번 : 개미 - 자바(JAVA)알고리즘/백준 2022. 4. 23. 00:01
https://www.acmicpc.net/problem/10158 10158번: 개미 가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오 www.acmicpc.net 문제 해석 개미가 2차원 공간에서 움직이는데 경계면에 부딪히면 반사되어 움직입니다. (초기 방향 = 오른쪽 위 45도) 개미는 1시간마다 이동합니다. t시간 이후에 개미의 좌표를 출력하세요 문제 풀이 전 설계 개미는 오른쪽위/ 왼쪽 위/ 오른쪽 아래/ 왼쪽 아래로 움직입니다. 하지만 오른쪽위로 가다가 어느 벽에 부딪히느냐에 따라 방향이 달라지기 때문에 이점을 고려해야 합니다. 만..
-
객체지향 5원칙 : SOLIDJava 2022. 4. 22. 23:25
아주 유명한 객체지향 5원칙인 SOLID에 대해서 자세하게 알아보겠습니다. SOLID란? 로버트 마틴이 2000년대 초에 명명한 객체 지향 프로그래밍의 다섯 가지 기본 원칙의 앞글자를 따서 SOLID라는 이름으로 소개한 것입니다. 1. SRP(Single Reponsibility Principle) SOLID 원칙의 제일 앞글자인 S에 해당하는 원칙으로 이름 그대로의 의미를 가집니다. 단일 책임 원칙 즉, 하나의 클래스는 하나의 기능만 가진다는 의미입니다. 하나의 기능? 과연 하나의 기능을 어디까지의 범위로 볼 것인가는 모호합니다. 따라서 변경이라는 키워드에 초점을 맞추어 변경사항이 있을때 다른 클래스들에게 미치는 영향이 적으면 SRP 원칙을 잘 따른 것으로 볼 수 있습니다. SRP 원칙을 적용하게 되면..
-
[백준] 8320번 : 직사각형을 만드는 방법 - 자바(JAVA)알고리즘/백준 2022. 4. 22. 00:01
https://www.acmicpc.net/problem/8320 8320번: 직사각형을 만드는 방법 상근이는 변의 길이가 1인 정사각형 n개를 가지고 있다. 이 정사각형을 이용해서 만들 수 있는 직사각형의 개수는 총 몇 개일까? 두 직사각형 A와 B가 있을 때, A를 이동, 회전시켜서 B를 만들 수 www.acmicpc.net 문제 해석 1 x 1 크기의 정사각형이 N개 존재합니다. 이 정사각형을 이용하여 만들 수 있는 직사각형을 개수를 구하세요. 문제 풀이 전 설계 반복문을 통해 i= 1 ~ N까지 반복합니다. 하나의 반복을 통해 i개 정사각형으로 만들 수 있는 직사각형의 개수를 구합니다. 우선 홀수/ 짝수로 나누어 생각해봤습니다. 홀수 1, 3, 5, 7, 9의 경우에는 한 줄로 밖에 가능하지 않을..
-
테이블의 PK는 어떤값으로 잡아야 할까?프로젝트/게시판 프로젝트 2022. 4. 21. 02:06
프로젝트에 사용하는 회원 테이블의 PK를 어떤 값으로 잡을지 고민하고 있습니다. 각 후보들에 대해 분석하여 보겠습니다. 검색을 하던 중 인조 식별자/본질 식별자라는 키워드도 알게 되었습니다. 본질 식별자 업무에 의해 만들어진 식별자 ( ID값과 같은 경우) 인조 식별자 본질 식별자가 복잡한 구성을 갖고 있어서 인위적으로 만든 식별자 우선 PK란?! Primary Key의 약어로 데이터베이스의 기본키를 의미합니다. 기본키는 중복된 값을 가질 수 없고 NULL 값일 수 없는 키로 튜플을 식별하기 위해 반드시 필요한 키입니다. 후보들 ID UUID Auto Increment ID Identification의 약자로 보통 사용자가 어떤 사이트에 인증을 얻기 위해 로그인할 때 사용됩니다. 사용자마다 단일한 값을 ..
-
[백준] 2116번 : 주사위쌓기 - 자바(JAVA)알고리즘/백준 2022. 4. 21. 00:01
https://www.acmicpc.net/problem/2116 2116번: 주사위 쌓기 첫줄에는 주사위의 개수가 입력된다. 그 다음 줄부터는 한 줄에 하나씩 주사위의 종류가 1번 주사위부터 주사위 번호 순서대로 입력된다. 주사위의 종류는 각 면에 적혀진 숫자가 그림1에 있는 www.acmicpc.net 문제 해석 주사위는 1~6까지의 숫자가 적혀있다. 하지만 마주 보는 면의 숫자의 합이 반드시 7이 되는 주사위가 아니다. 아래에서부터 1번 주사위, 2번 주사위, 3번 주사위,... 의 순서로 주사위를 쌓는다. 이때 다음과 같은 규칙이 존재한다. 서로 붙어 있는 두 개의 주사위에서 아래에 있는 주사위의 윗면에 적혀 있는 숫자 = 위의 있는 주사위의 아랫면에 적힌 수 (단 1번 주사위는 마음대로 놓을 수..