본문 바로가기
백준 2343 기타레슨(매개변수탐색) 문제 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다. 강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블루레이는 모두 같은 크기이어야 한다. 강토의 각 강의의 길이가 .. 2024. 4. 3.
Spring Data JPA 사용하기 JPA는 EntityMananger를 이용하고 crud 메서드를 클래스에서 구현하는 방법으로 사용했다. Spring Data JPA는 더 간편하게 crud가 가능하다 인터페이스를 선언해서 JpaRepository를 상속하면 바로 사용할 수 있다 우리가 다루는 자료형이 Course니 을 넣어줬다 public interface CourseSpringDataJpaRepository extends JpaRepository {} JpaRepository의 기능인 save, delete를 이용해서 데이터를 추가, 삭제할 수 있다 @Component public class CourseCommandLineRunner implements CommandLineRunner { private final CourseSpring.. 2024. 4. 3.
C예상문제 틀렸던 것들 적어놓기 헝가리안 표기법 - 변수명 작성시 자료형을 의미하는 문자를 포함해서 작성 ex) int i_InputA, double d_Result int - 4byte char - 1byte, 자바는 2바이트 float - 4byte double - 8byte 연산자 우선순위 단 - 산 - 시 - 관(, ==, !=) - 비트 - 논 - 조건 - 대입 printf("%.3f", p); 2024. 4. 2.
파이썬 예상문제 틀렸던 것들 적어놓기 파이썬 t/f 판별 True False 2024. 4. 2.
자바 예상문제 틀렸던 것들 적어놓기 자바 / * % 연산자들 우선순위 - % 연산자가 제일 먼저 계싼되고 / 와 * 는 같은 우선순위다 1~1000까지 완전수 6, 28, 496, 8128 byte num = 15 일때 ~num 구하기 간단하게 구할려면 +1 하고 부호 바꾸기 -16이 된다 자바 & | ^ 우선순위 & 가 제일 높고 ^ 이 중간 | 이 제일 낮다 int a, b, c, hap; a = b = c = 2; hap = ++a | b-- & c--; System.out.printf("%d %d %d %d", hap, a, b, c); hap은 3이 나온다 %8.4s\n 8칸을 준비해서 오른쪽부터 4칸 출력 = " Powe" %-8.4s\n 은 왼쪽부터 4칸 나와서 "Powe "다! public class Problem { pub.. 2024. 4. 2.
백준 2512 예산(매개변수 탐색) 문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 예를 들어, 전체 국가예산이 485이고 4개 지방의 예산요청이 각각 120, 110, 140, 150이라고 하자. 이 경우, 상한액을 127로 잡으면, 위의 요청들에 대해서 각각 120, 1.. 2024. 4. 1.
SQLD 합격수기 3/9일에 보고 나오는데 2주 이상 걸려서 설마 떨어지면 어쩌지 라는 생각을 했지만 다행히 합격... 합격한 기념으로 어떻게 공부했는지 작성해보려고 합니다. 일단 저번학기 학교에서 데이터베이스 전공 + 교양을 들으면서 기초적인 CRUD, JOIN 연산은 많이 해둬서 어느정도 자신이 있는 상태였지만 문제풀면서 자신감 박살났고 전공때 교수님이 학생들 수준?을 보고 이론에서는 정규화, 반정규화를 나가지 않은 상태라 처음 보는 개념들은 책 보면서 구글링 하며 노랭이 책 문제를 꾸역꾸역 풀었습니다 공부법은 SQL 자격검정 실전문제(노랭이 책), 유튜브 노랭이 강의, 다른 분 티스토리에 있는 SQLD 기출 2024. 4. 1.
스프링부트 JPA 프로젝트 시작하기 강의는 h2기준으로 진행되지만 mysql이 더 편하고 범용적인것 같아서 mysql 기준으로 설정했다 gradle 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' developmentOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework... 2024. 4. 1.
백준 2110 공유기 설치(매개변수탐색) 문제 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오. 입력 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는.. 2024. 3. 31.
스프링 부트 시작하기 •일단 rest api 만들어보기 @RestController 어노테이션으로 json 형태로 반환받을 수 있다 @RestController public class CourseController { @RequestMapping("/courses") public List retrieveAllCourses(){ List list = Arrays.asList(new Course(1, "ho", "java"), new Course(1, "hoshi", "spring")); return list; } } • 개발 환경 세팅하기 • 디버그 수준 설정하기 application.properties에서 출력되는 로그의 수준이나 어떤 환경을 사용할지 적용할 수 있다 spring.profiles.active= dev 이렇게 .. 2024. 3. 30.
컴퓨터구조 4주차 BCD 코드 10진수 1자리를 2진수 4Bit로, 8421 코드라고도 한다 137 BCD로 하면 0001 0011 0111 표준 BCD 코드 - 존 비트2개 + BCD 코드 대문자, 숫자만 가능하다 숫자는 1~9 다음 0 이 온다고 생각하는게 편하다 1 이 00 0001, 9가 00 1001 이고 0이 00 1010 이다 EBCDIC Zone2를 보고 숫자를 적으면 되는 것 같다 아스키코드 문자 A는 100 0001 부터 올라가서 O는 100 1111이 되고 그 이상부터인 P부터는 101 0000 부터 올라간다 문자 a는 110 0001 부터 올라가서 z는 111 1010이 된다 숫자 0 - 110000, 숫자 9 - 111001 Excess-3 (3초과 코드) bcd 코드에 3을 더한다 6(0110)을.. 2024. 3. 30.
백준 6236 용돈관리 (매개변수 탐색) 문제 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 하였다. 현우는 통장에서 K원을 인출하며, 통장에서 뺀 돈으로 하루를 보낼 수 있으면 그대로 사용하고, 모자라게 되면 남은 금액은 통장에 집어넣고 다시 K원을 인출한다. 다만 현우는 M이라는 숫자를 좋아하기 때문에, 정확히 M번을 맞추기 위해서 남은 금액이 그날 사용할 금액보다 많더라도 남은 금액은 통장에 집어넣고 다시 K원을 인출할 수 있다. 현우는 돈을 아끼기 위해 인출 금액 K를 최소화하기로 하였다. 현우가 필요한 최소 금액 K를 계산하는 프로그램을 작성하시오. 입력 1번째 줄에는 N과 M이 공백으로 주어진.. 2024. 3. 28.
모바일로봇 4주차 오늘한거 시험에 나온다 중간고사에 오늘쓴거 나온다 2024. 3. 27.
백준 2805 나무자르기 (매개변수 탐색) 파라메트릭 서치 : 이분탐색과 비슷하나 범위 값 중에서 찾는 방법 l = 0, r = 가능한 최대 값으로 하고 범위를 이분탐색처럼 좁혀가면서 가능한 값을 찾는다 문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다.. 2024. 3. 27.
백준 2417 정수 제곱급 문제 정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 n이 주어진다. (0 ≤ n < 263) 출력 첫째 줄에 q2 ≥ n인 가장 작은 음이 아닌 정수 q를 출력한다. 예제 입력 1 복사 122333444455555 예제 출력 1 복사 11060446 풀이 단위가 커서 long 자료형을 사용햇고 m이 value의 제곱근 이상인 경우는 m이 더 커지면 무조건 value의 제곱근 보다 크니 r을 줄이고 작으면 m보다 작은 값은 절대 value의 제곱근 보다 클 수 없으니 l을 m+1 하면서 이분탐색 했다 import java.awt.*; import java.io.IOException; import java.util.Arrays; import java.util.S.. 2024. 3. 27.
백준 28470 문제 복서 성우는 항상 공격과 회피를 연속적으로 한다. 슥~빡! 빡~슥! 즉, 피하고 때리거나, 때리고 피한다. 어느 날, 복서 성우는 숙명의 라이벌 성준이와 복싱 경기를 치르게 되었다. 이 경기에서 성우는 오직 N번의 공격-회피 연속 동작을 통해 성준을 상대할 예정이다. 성우는 매 공격-회피 연속 동작 시의 체내 아드레날린 변화량을 정확히 알고 있다. i번째 공격-회피 연속 동작 상황에서, 공격 시에는 체내 아드레날린이 A_i만큼 증가하고, 회피 시에는 체내 아드레날린이 B_i만큼 감소한다. 또한 i번째 공격-회피 연속 동작 상황에서, 공격을 먼저 한다면, 공격 시 체내 아드레날린 증가량이 A_i에서A_i * K_i로 바뀌고, 회피를 먼저 한다면, 회피 시 체내 아드레날린 감소량이 B_i에서B_i * .. 2024. 3. 24.
백준 10816 (map) 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,0.. 2024. 3. 24.
백준 2467(이분탐색) 문제 KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 용액.. 2024. 3. 22.
컴구 3주차 비트, 바이트 킬로 - 메가 - 기가 - 테라ㅣ 워드- cpu가 한번에 처리 가능한 데이터 크기 하프워드 - 절반, 풀워드 - 1배, 더블 2 이진수 0b1001 = 1001(2) = 9 이진수 음수 표현 -> 뒤집고 +1 16진수 0x15 = 15(16) 2-> 16 변환 오른쪽부터! 4자리씩 묶어서 이어붙이기 1101 0101 -> D5 011 1101 0101 를 16진수로 변환하면 3D5 16 -> 2 변환 D5 를 자리수마다 4비트 이진수로 변환 D = 1101 , 5 = 0101 해서 이진수로는 1101 0101 2024. 3. 22.
자바프로그래밍 3주차 강제 타입변환 long + float 타입일때 long을 (int)로 강제 형변환하고 + float하면 int + float로 처리되서 값은 float로 나온다 (char)0x12340041 -> 강제 타입 결과 0x41이 되고 10진수로 바꾸면 65 가 되서 'A'를 리턴 16진수 - 2진수 변환하기 각 자리수마다 4자리 2진수로 변환 0x55ff 은 0101 0101 1111 1111 이다 대입연산자 우선순위 오른쪽부터 a= 5 a= b = 10 하면 a,b 둘다 1- 2024. 3. 21.
2295 세수의 합(set, 누적합) 문제 N(5 ≤ N ≤ 1,000)개의 자연수들로 이루어진 집합 U가 있다. 이 중에서 적당히 세 수를 골랐을 때, 그 세 수의 합 d도 U안에 포함되는 경우가 있을 수 있다. 이러한 경우들 중에서, 가장 큰 d를 찾으라. 예를 들어 {2, 3, 5, 10, 18}와 같은 집합이 있다고 하자. 2+3+5 = 10이 되고, 이 수는 집합에 포함된다. 하지만 3+5+10 = 18이 되고, 이 경우가 세 수의 합이 가장 커지는 경우이다. 입력 첫째 줄에 자연수 N이 주어진다. 다음 N개의 줄에 차례로 U의 원소가 하나씩 주어진다. 주어진 U는 집합이 되므로 입력되는 두 수가 같아서는 안 된다. U의 원소는 200,000,000보다 작거나 같은 자연수이다. 답이 항상 존재하는 경우만 입력으로 주어진다. 출력 우.. 2024. 3. 21.
빈 관련 어노테이션 @component - 특정 클래스에 빈 생성하는 어노테이션, 아래 어노테이션들은 좀 더 구체적인 어노테이션이다 클래스에 용도에 맞게 사용하는 구체적인 어노테이션 @Service - 비즈니스 클래스 @Controller - 컨트롤러에 사용 @Repository - 데이터베이스와 통신하는 클래스 @Configuration은 클래스가 @Bean 메서드를 하나 이상 선언함을 나타낸다. @Configuration은 자바 설정 파일을 만드는데 사용한다 @Configuration 이 있는 클래스에 @Bean 메서드를 정의하면 메서드에서 반환되는 모든 값에 스프링이 빈을 생성한다 @ComponentScan은 컴포넌트를 스캔할 패키지를 정의하고 @Component가 붙은 클래스를 스프링 빈으로 만든다 2024. 3. 20.
PostConstruct, PreDestroy @PostConstruct - 의존성 주입이 이루어진 후 실행되는 메서드에 사용, db에서 데이터 불러올때 등에 사용 @PreDestroy - 빈이 삭제되기 전에 사용, 종료 전에 데이터 저장할 때 등에 사용 package udemy.learnspring.singleton; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.*; import org.springframework.stereotype.Compo.. 2024. 3. 20.
싱글톤, 프로토타입 • 자바 싱글톤과 스프링 싱글톤 차이 스프링 싱글톤은 스프링 IoC 컨테이너당 객체 인스턴스가 하나 자바 싱글톤은 JVM당 인스턴스가 하나 • 싱글톤과 프로토타입 차이 기본적으로 스프링에서 생성되는 빈들은 싱글톤이다 빈을 여러번 호출해도 같은 인스턴스를 가져온다 @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) 빈 위에 이렇게 Scope 어노테이션을 붙이면 프로토타입 객체로 생성되어서 빈을 가져올때마다 다른 인스턴스를 가져온다 @Component class NormalClass{ } @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) class PrototypeClass{ } @Confi.. 2024. 3. 20.
지연 초기화, 즉시 초기화 스프링의 기본 초기화는 즉시 초기화지만 어노테이션을 이용해서 초기화 시간을 조정할 수 있다 지연초기화를 쓸 일이 거의 없다고는 하지만 알아놓자 @Component class classA{ public classA(){ System.out.println("class a!"); } } @Component class classB{ private classA classA; public classB(classA classA){ System.out.println("some logic"); this.classA = classA; } } @Configuration @ComponentScan public class LazyInitializtion { public static void main(String[] args) .. 2024. 3. 20.
백준 14425 이분탐색, set 문제 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. 출력 첫째 줄에 M개의 문자열 중에 총 몇 개가 집합 S에 포함되어 있는지 출력한다. 예제 입력 1 복사 5 11 baekjoononlinejudge start.. 2024. 3. 20.
백준 1920 (이진탐색, set) 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 예제 입력 1 복사 5 4 1 5 2 3 5 1 3 7 9 5 예제 출력 1 복사 1 1 0 0 1 set을 이용하면 입력을 set에 담고 .. 2024. 3. 18.
백준 19951 (누적합) 문제 2020년 5월 14일 논산훈련소에 입대한 태상이는 첫 총기 훈련에서 가스 조절기를 잃어버리는 중대한 실수를 범했다. 그로 인해, 태상이는 조교들에게 눈총을 받게 되었다. 조교들은 태상이에게 연병장(운동장)의 흙을 옮기는 일을 주고 제대로 수행하지 못하면 징계를 내리려고 한다. 연병장은 일렬로 이어진 N개의 칸으로 이루어져 있으며 각 칸마다 높이를 가지고 있고, 첫 번째 칸부터 순서대로 1번, 2번, 3번, ..., N번 칸으로 명칭이 붙어있다. 조교들은 총 M명이 있으며, 각 조교들은 태상이에게 a번 칸부터 b번 칸까지 높이 k만큼 흙을 덮거나 파내라고 지시한다. 흙은 주변 산에서 얼마든지 구할 수 있으므로 절대로 부족하지 않다. 태상이는 각 조교의 지시를 각각 수행하면, 다른 조교의 지시로 흙을.. 2024. 3. 17.
정처기 데베과목 3 create table patient( id char(5) primary key, name char(10), sex char(1), phone char(20), constraint sex_ck check(sex in('f','m')), constraint id_fk foreign key(id) references doctor(doc_id) ); 4 create table Instructor( id char(5) primary key, name char(15) not null, dept char(15) references Department(dept) on delete set null on update cascade ); 5 속성 추가 alter table patient add job char(20);.. 2024. 3. 12.
백준 18870 좌표압축 문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 복사 5 2 4 -10 4 -9 예제 출력 1 복사 2 3 0 3 1 예제 입력 2 복사 6 1000 999 10.. 2024. 3. 12.