분류 전체보기(250)
-
백준 18310: 안테나 [Java] - 포포
문제 일직선 상의 마을에 여러 채의 집이 위치해 있다. 이중에서 특정 위치의 집에 특별히 한 개의 안테나를 설치하기로 결정했다. 효율성을 위해 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되도록 설치하려고 한다. 이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다. 집들의 위치 값이 주어질 때, 안테나를 설치할 위치를 선택하는 프로그램을 작성하시오. 예를 들어 N=4이고, 각 위치가 1, 5, 7, 9일 때를 가정하자. 이 경우 5의 위치에 설치했을 때, 안테나로부터 모든 집까지의 거리의 총 합이 (4+0+2+4)=10으로, 최소가 된다. 입력 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집..
2022.06.08 -
JPA 에러: save the transient instance before flushing
개인 프로젝트의 테스트 코드에서 위와 같은 에러가 발생했다. 오브젝트가 저장되지 않은 인스턴스를 참조하고 있다는 메시지로 보인다. 검색 결과 FK 로 사용되는 컬럼에 값이 없는 상태에서 데이터를 넣으려다 발생한 에러인 듯 싶다. 예를 들어 멤버(id, name, team_id), 팀(id, name)의 테이블에서 팀의 데이터가 없는 채로 멤버의 데이터를 넣으려고 하면 위의 에러가 발생한다는 뜻이다. 이 경우 멤버를 영속상태로 만들때 팀도 자동으로 영속화해주는 Cascade 옵션을 사용해 해결이 가능하다. 상품(Item) 1 : N ItemCategory N : 1 카테고리(Category) 의 테이블에서 @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType..
2022.06.07 -
백준 15652: N과 M (4) [Java] - 포포
문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 내 제출 package com.company.ch11BackTracking; import java.i..
2022.06.04 -
백준 15904: UCPC는 무엇의 약자일까? [Java] - 포포
문제 UCPC는 '전국 대학생 프로그래밍 대회 동아리 연합 여름 대회'의 줄임말로 알려져있다. 하지만 이 줄임말이 정확히 어떻게 구성되었는지는 아무도 모른다. UCPC 2018을 준비하던 ntopia는 여러 사람들에게 UCPC가 정확히 무엇의 줄임말인지 물어보았지만, 아무도 정확한 답을 제시해주지 못했다. ntopia가 들은 몇 가지 답을 아래에 적어보았다. Union of Computer Programming Contest club contest Union of Computer Programming contest Club contest Union of Computer Programming contest club Contest Union of Collegiate Programming Contest clu..
2022.06.03 -
[토비의 스프링 3.1] 2.3 개발자를 위한 테스팅 프레임워크 JUnit
JUnit 프레임워크를 자세히 살펴본다. 스프링의 핵심 기능 중 하나인 스프링 테스트 모듈도 JUnit을 이용한다. 따라서 JUnit은 스프링을 활용하려면 꼭 사용할 줄 알아야 한다. 2.3.1 JUnit 테스트 실행 방법 IDE와 빌드툴로 테스트 실행이 가능한데, IDE가 손쉽고 빠른 테스트를 제공한다. 실행 방법은 따로 포스팅 할 것이 없어 해당 절은 생략한다. 2.3.2 테스트 결과의 일관성 JUnit을 적용해서 테스트 코드를 만들었으나, 아직 개선할 점이 남아있다. 가장 불편했던 점은, 매번 테스트를 실행하기 전에 DB의 USER 테이블 데이터를 지워야 했다는 것이다. 깜빡 잊고 그냥 실행한 경우, 등록된 사용자 정보와 기본키가 중복된다면서 add() 메소드 실행중에 에러가 발생할 것이다. 이 경..
2022.06.03 -
[토비의 스프링 3.1] 2.1 UserDaoTest 다시 보기
스프링이 제공하는 가장 중요한 가치로 객체지향과 테스트를 꼽을 수 있다. 실제로 테스트를 작성할 때 JUnit 프레임워크를 사용했는데 손쉽게 사용할 수 있었다. 2장에서는 테스트의 가치, 활용 전략, 스프링과의 관계를 살펴본다. 2.1.1 테스트의 유용성 기존 1장에서 개발한 UserDao가 잘 동작하는지 확인하기 위해 테스트 코드를 작성했었다. main() 메소드를 이용해 UserDao를 직접 호출해서 add(), get() 메소드의 결과를 System.out.println()으로 콘솔에 출력해 눈으로 확인했었다. 웹을 통한 DAO 테스트 방법의 문제점 DAO를 테스트하고 싶은데 서비스, MVC 프레젠테이션 계층 등을 작성하고 테스트용 웹 서버에 배치한 뒤, 폼을 띄워 값을 입력해야 한다면 당연히 제대..
2022.06.01