"꾸준하고 완벽한 한 걸음"

2024/03 18

[백준 02437] 저울 [Python]

문제 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있다. 무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오. 예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다. 입력 첫 째 줄에는 저울추의 개수를 나타내는 양의 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 둘째 줄에는 저울추의 무게를 나타내는..

[백준 01449] 수리공 항승 [C/C++]

문제 항승이는 품질이 심각하게 나쁜 수도 파이프 회사의 수리공이다. 항승이는 세준 지하철 공사에서 물이 샌다는 소식을 듣고 수리를 하러 갔다. 파이프에서 물이 새는 곳은 신기하게도 가장 왼쪽에서 정수만큼 떨어진 거리만 물이 샌다. 항승이는 길이가 L인 테이프를 무한개 가지고 있다. 항승이는 테이프를 이용해서 물을 막으려고 한다. 항승이는 항상 물을 막을 때, 적어도 그 위치의 좌우 0.5만큼 간격을 줘야 물이 다시는 안 샌다고 생각한다. 물이 새는 곳의 위치와, 항승이가 가지고 있는 테이프의 길이 L이 주어졌을 때, 항승이가 필요한 테이프의 최소 개수를 구하는 프로그램을 작성하시오. 테이프를 자를 수 없고, 테이프를 겹쳐서 붙이는 것도 가능하다. 입력 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 ..

[백준 01213] 팰린드롬 만들기 [Python]

문제 임한수와 임문빈은 서로 사랑하는 사이이다. 임한수는 세상에서 팰린드롬인 문자열을 너무 좋아하기 때문에, 둘의 백일을 기념해서 임문빈은 팰린드롬을 선물해주려고 한다. 임문빈은 임한수의 영어 이름으로 팰린드롬을 만들려고 하는데, 임한수의 영어 이름의 알파벳 순서를 적절히 바꿔서 팰린드롬을 만들려고 한다. 임문빈을 도와 임한수의 영어 이름을 팰린드롬으로 바꾸는 프로그램을 작성하시오. 입력 첫째 줄에 임한수의 영어 이름이 있다. 알파벳 대문자로만 된 최대 50글자이다. 출력 첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.

[파이썬 자료구조와 알고리즘 for Beginner] 연습문제 5 정답

연습문제 1. 원형 연결 리스트의 특징과 거리가 먼 것을 두가지 고르시오. (4) 마지막 노드의 링크는 비어있다. 2. 그림과 같은 워형 연결 리스트를 만드는 코드의 (1)을 채우시오. (1) node1.link = node1 3. 원형 연결 리스트를 삭제하는 그림이다. 정연 노드를 node2,쯔위 노드를 node3, 사나 노드를 node4라고 했을 때 다음 (1) ~ (3)을 노드 이름으로 채우시오. (1) node2 (2) node3 (3) node3 4. 원형 연결 리스트의 마지막 노드가 참이 되는 조건은? (1) current.link != head 5. 원형 연결 리스트의 첫 번째 노드를 삭제하는 코드다. (1) ~ (3)에 적합한 코드를 다음 중 고르시오. current = head last...

Algorithm 2024.03.25

[파이썬 자료구조와 알고리즘 for Beginner] 연습문제 4 정답

연습 문제 1. (1)과 (2)에 알맞는 용어를 각각 채우시오 (1) 선형 리스트는(은) 배열에 데이터를 차례대로 저장하므로 데이터의 실제 위치 순서로 데이터가 구성된다. (2) 단순 연결 리스트 에서는 데이터를 노드 단위로 삽입/삭제한다. 2. 선형 리스트와 비교한 단순 연결 리스트에 대한 설명이다. 거리가 먼 것은? (3) 중간에 새로운 데이터를 삽입할 때는 비효율적이다. → 앞뒤 노드와 연결만 하면되므로 효율적이다. 3. 노드 구조에서 (a)와 (b)를 무엇이라고 하는지 다음 중에서 고르시오 리스트, 링크, 헤드, 배열, 주소, 번지, 데이터 (a) 데이터 (b) 링크 4. 그림과 같이 노드를 생성하고 연결하는 코드를 차례대로 올바르게 나열한 것은? (2) (c) node1 = Node() (a) ..

Algorithm 2024.03.25

[백준 16987] 계란으로 계란치기 [Python]

문제 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱걸이를 5회 하는 기적의 운동 루틴을 통해 뇌와 근육을 동시에 단련한다. 근육을 단련할 때 식단이 정말로 중요하다는 것을 아는 인범이는 탄수화물이 많은 밥이나 빵 따위의 아침 식사를 대신해 단백질이 많은 계란찜을 해먹는다. 계란찜을 먹기 위해서는 계란을 깨야 하는데, 인범이는 힘이 너무 넘치는 나머지 부엌의 대리석을 이용해 계란을 깨면 늘 껍데기가 산산조각나 뒷처리가 너무 어렵게 되곤 한다. 어떻게 하면 계란을 조심스럽게 깰 수 있을까 고민하던 인범이에게 유현이는 굉장히 좋은 해결책을 알려주었다. 바로 계..

[Spring] Lazy Loading

Lazy Loading 데이터 로딩 전략 중 하나로 연관 데이터를 실제로 필요한 시점에만 로드하는 방식 조회한 객체와 연관된 객체를 한 번에 불러오면 불필요한 데이터까지 불러올 수 있기 때문에 이를 방지하기 위해 사용된다. JPA에 의해 관계 매핑 어노테이션이 적용된 필드에만 Lazy Loading이 기본값으로 적용되며 null값이 들어간다. 연관 객체의 호출 Lazy Loading 전략에 의해 연관 객체 필드는 null을 가진다. 그렇다면 어떻게 연관 객체를 가져올까? 연관 객체에 대한 접근시 JPA구현체의 영속성 컨텍스트가 이를 감지하고 연관 객체를 가져오기 위한 추가 쿼리를 자동으로 생성한다. 테스트와 실제 서비스의 차이 테스트 코드에서는 DB에서 조회 객체를 가져온 후 DB와의 세션이 종료된다. ..

Backend 2024.03.24

[백준 01202] 보석 도둑 [Python]

문제 세계적인 도둑 상덕이는 보석점을 털기로 결심했다. 상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다. 상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ 100,000,000) 모든 숫자는 양의 정수이다. 출력 첫째 줄에 상덕이가 훔칠 수 있는 ..

[Servlet] Create Servlet [IntelliJ]

Intellij에서 Servlet 생성하기 이어서 Servlet을 생성하는 과정에 대해 알아보자. [Servlet] Create Dynamic Web Project [Intellij] IntelliJ에서 동적 웹 프로젝트 생성하기 2023.03 IntelliJ에서 동적 웹 프로젝트를 만드는 법을 소개한다. 사전에 톰캣 서버가 준비되어 있어야 한다. 우선 프로젝트 생성을 눌러주고 Maven 원형을 선택 kyr-db.tistory.com 우선 이전에 만든 동적 웹 프로젝트의 설정 > 라이브러리 > Maven에서 추가를 눌러주자. 아래의 라이브러리를 검색해 설치해주자. javax.servlet:javax.servlet-api:4.0.1 라이브러리를 다운 받은 후 서블릿을 생성해주면 된다.

Backend 2024.03.23

[Servlet] Create Dynamic Web Project [IntelliJ]

IntelliJ에서 동적 웹 프로젝트 생성하기 2023.03 IntelliJ에서 동적 웹 프로젝트를 만드는 법을 소개한다. 사전에 톰캣 서버가 준비되어 있어야 한다. 우선 프로젝트 생성을 눌러주고 Maven 원형을 선택하자. Archetype를 maven- archetype-webpp로 설정 후 생성 프로젝트 생성을 기다리고.. 프로젝트 구성 편집을 들어가자 톰캣 로컬 서버를 추가해주자. 사전에 준비한 톰캣의 위치를 등록해주자. 배포로 들어가서 war exploded를 아티팩트로 등록까지 하면 끝난다. 간혹 아티팩트가 바로 안뜨는 경우가 있다. 그럴경우 아티팩트를 지정하지 않고 우선 적용 후 다시 설정창으로 들어오면 위 사진처럼 아티팩트가 잡힌다.

Backend 2024.03.23