📚 문제 링크: https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 💡 접근법 자릿수가 한 개인 소수(2, 3, 5, 7)부터 DFS 탐색을 시작한다. 소수에 10을 곱하고 0부터 9까지 더한 값이 소수인지 판별하는 과정을 반복한다. 이때 2의 배수를 더할 경우 무조건 소수가 아니므로 이를 제외하고 수행한다. DFS란? 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다..
전체 글
📚 문제 링크: https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 💡 접근법 문제에서 말하는 연결 요소란 DFS가 끝날 때까지 탐색한 모든 노드의 집합을 말한다. 따라서 DFS를 수행한 횟수를 계산하면 된다. DFS란? 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다. 💻 코드 1)..
본 게시글은 김영한 강사님의 [스프링 핵심 원리 - 기본편]을 수강하며 작성한 글입니다. 스프링의 핵심 개념 스프링을 잘 사용하기 위해서는 등장한 이유와 핵심 개념을 이해해야 한다. 스프링은 자바 언어 기반의 프레임워크이며, 객체 지향 언어(자바)가 가진 강력한 특징을 살려내기 위해 등장했다. 즉, 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 도구이다. 그렇다면 자바가 가진 강력한 특징은 무엇이며, 좋은 객체 지향 프로그래밍은 무엇일까? 좋은 객체 지향 프로그래밍이란? 좋은 객체 지향 프로그래밍이란, 객체들을 레고 블럭 조립하듯 유연하고 변경이 용이하도록 개발하는 것을 말한다.여기서 말하는 유연하고 변경 용이함을 제공하는 객체 지향의 특징이 바로 다형성이다. 다형성을 실세계에 비유했을..
https://youtu.be/brE0tYOV9jQ위의 백기선님 영상에서 제시된 문제의 원인을 연관관계 매핑 시 @JoinColumn을 선언하지 않아서라고 생각했다. 하지만 답은 연관관계 편의 메서드를 통해 객체의 연관관계를 양방향으로 설정하지 않은 것이었다.다대일 매핑 시 항상 @JoinColumn을 선언했었는데, 위의 영상으로 인해 @JoinColumn의 역할에 대해 자세히 공부해 볼 필요성을 느꼈다. 예제로 진행할 전체 코드는 아래와 같다. Book 클래스@Entitypublic class Book { @Id @GeneratedValue private Integer id; private String isbn; private String title; @ManyToOne ..
📚 문제 링크: https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 💡 접근법 계수 정렬 알고리즘을 이용하여 구현하였다. 계수 정렬이란? 각 원소들 간의 비교 없이, 크기를 기준으로 개수를 세어 정렬하는 방법이다. 💻 코드 1) 전체 코드 import sys N = int(sys.stdin.readline()) count = [0] * 10001 for _ in range(N): count[int(sys.stdin.readline())] += 1 for i, c in..
본 게시글은 김영한님의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 작성한 글입니다. 1. 영속성 컨텍스트 1 1) JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) 영속성 컨텍스트 2) 앤티티 매니저 팩토리와 앤티티 매니저 앤티티 매니저 팩토리를 통해 클라이언트의 요청이 올 때마다 앤티티 매니저를 생성하고 내부적으로 DB 커넥션을 사용해서 DB에 접근한다. 3) 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어이다. 엔티티를 영구 저장하는 환경이라는 뜻이다. EntityManager.persist(entity); persist는 사실 DB에 저장하는 것이 아니라 Entity를 영속성 컨텍스트에 저장한다는 뜻이다. 영속성..
본 게시글은 김영한님의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 작성한 글입니다. 1. Hello JPA - 프로젝트 생성 IntelliJ 프로젝트 생성을 통해 Maven 기반 프로젝트를 생성한다. 1) Maven 설정 groubId : jpa-basic artifactId : ex1-hello-jpa version : 1.0.0 2) 라이브러리 추가 4.0.0 jpa-basic ex1-hello-jpa 1.0-SNAPSHOT 8 8 UTF-8 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 2.2.222 s H2database 버전은 PC에 다운받은 버전과 같아야 한다. 3) JPA 설정하기 - persist..
@MappedSupperclass @MappedSupperclass는 상속 관계 매핑에서 사용되는 어노테이션이다. @MappedSuperclass public abstract class Timestamped { private LocalDateTime createdDate; private LocalDateTime modifiedDate; ... } @Entity public class Member extends BaseEntity { ... } 해당 어노테이션에 선언된 클래스는 테이블과 매핑되지 않으며, 자식 클래스에게 매핑 정보만 제공한다. 이를 통해 자식 클래스는 부모 클래스의 필드를 상속받아 사용할 수 있다. → 중복 코드를 줄이고 객체 지향적인 설계를 할 수 있다. @Embedded & @Embed..