danbibibi
article thumbnail
BOJ 1766번: 문제집
문제 풀이/백준 2023. 3. 23. 12:49

문제 문제 바로가기> BOJ 1766번: 문제집 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 풀이 세가지 조건에 따라 문제를 풀 순서를 출력해야한다. 1. N개의 문제는 모두 풀어야 한다. ⇒ 항상 문제를 모두 풀 수 있는 경우만 입력으로 주어진다고 했으니, 신경 쓸 필요 없다. 2. 먼저 푸는 것이 좋은 문제가 있는 문제는, 먼저 푸는 것이 좋은 문제를 반드시 먼저 풀어야 한다. ⇒ 위상 정렬을 이용해서, 정해진 순서를 만족시키도록 한다. 3. 가능하면 쉬운 문제부터 풀어야..

article thumbnail
BOJ 1726번: 로봇
문제 풀이/백준 2023. 3. 23. 03:08

문제 문제 바로가기> BOJ 1726번: 로봇 1726번: 로봇 많은 공장에서 로봇이 이용되고 있다. 우리 월드 공장의 로봇은 바라보는 방향으로 궤도를 따라 움직이며, 움직이는 방향은 동, 서, 남, 북 가운데 하나이다. 로봇의 이동을 제어하는 명령어는 www.acmicpc.net 풀이 BFS + Priority Queue를 이용해서 문제를 해결했다. 문제 해결에 있어 중요한 점을 몇가지 적어보겠다! 1. 로봇이 어떤 좌표(y, x)에서 방향 d를 바라보고 있는 경우는 유일하다. 즉, 한번만 처리해주고, 다시 처리해줄 필요가 없다. 어떻게 왔든, 그 이후로 펼쳐질 결과는 동일할 것이기 때문! 이를 위해 3차원 visited 배열을 이용해주었다. 즉, visited[y][x][로봇이 바라보고 있는 방향]이..

article thumbnail
BOJ 23309번: 철도 공사
문제 풀이/백준 2023. 3. 22. 21:47

문제 문제 바로가기> BOJ 23309번: 철도 공사 23309번: 철도 공사 첫 번째 줄에 공사를 시작하기 이전에 있는 역의 개수를 나타내는 양의 정수 $N$과 공사 횟수를 나타내는 양의 정수 $M$이 주어진다. ($1 \le N \le 500\,000$, $1 \le M \le 1\,500\,000$) 두 번째 줄에는 공사 www.acmicpc.net 풀이 이중 연결 리스트 개념을 이용하되, 각 원소에 접근할 때 O(1)로 접근하기 위해 이전 역(prev)과 다음 역(next)을 가지는 벡터를 만들어 주었다. 그렇지 않고, 해당 역을 찾기 위해 또다시 탐색을 진행해야 한다면, 시간 초과가 발생하기 때문!! O(N*M),,, #include #include #define MAX 1000001 using..

article thumbnail
DAO, DTO, Entity 란?
WEB/back-end 2023. 3. 22. 01:47

DAO (Data Access Object) 실제로 DB에 접근하는 객체 (CRUD 기능 수행) DB에 접근하기 위한 로직 & 비즈니스 로직을 분리하기 위해 사용 DTO (Data Transfer Object) 계층 간 (Controller, View, Business Layer) 데이터 교환을 위한 Java Beans 로직을 가지지 않는 데이터 객체 ( getter, setter 메소드만 가진 클래스 ) VO (Value Object) : DTO와 유사하지만, read-only 특징을 가짐 (setter x) Entity 실제 데이터베이스 테이블과 1:1로 매핑되는 클래스 DB 테이블 내에 존재하는 컬럼만을 속성(필드)으로 가짐 Entity 클래스는 상속을 받거나 구현체여서는 안됨 💡 CRUD 란? :..

article thumbnail
BOJ 12852번: 1로 만들기 2
문제 풀이/백준 2023. 3. 21. 20:54

문제 문제 바로가기> BOJ 12852번: 1로 만들기 2 12852번: 1로 만들기 2 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다. www.acmicpc.net 풀이 처음엔, 아래와 같이 dp 배열을 구축한 후, 구축된 배열에서 역추적해가며 N을 1로 만드는 방법에 포함되어 있는 수를 출력해주었다. 이 때는 ,, dp[1] = 0을 1로 초기화 해줘서 앞에서 리턴하게 하고 암튼 그랬지만, 전반적인 역추적 아이디어는 아래와 같았다. 그런데 사실 dp 배열을 만드는 과정에서 배열을 하나 더 만들어서 그 이전 값을 저장하는 dp 배열을 만든다면??!! 더 편하게 "N을 1로 만드는 방법에 포함되어 있는 수"를 구할 수 있다!! dp 배열이 업데이트 됨에 따라 그 값을 담고 ..

article thumbnail
BOJ 2623번: 음악프로그램
문제 풀이/백준 2023. 3. 21. 02:57

문제문제 바로가기> BOJ 2623번: 음악프로그램 2623번: 음악프로그램첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 풀이보조 PD들이 정해 놓은 순서를 모두 만족 시키는 최종 순서를 찾아야 하기 때문에 위상정렬을 이용해서 문제를 풀었다! 주의 할 점은 이미 들어온 순서 쌍이 또 들어올 수 있다는 점이다. 이를 중복 처리 해주지 않기 위해 set을 이용했다! #include #include #include #define MAX 1001 using namespace std; int N, M; int inDegr..

article thumbnail
Mac 이클립스 자동완성 설정

1. settings ... 에 들어가 준다. 2. key 검색 후, (General > Keys > Content Assist) 에 원하는 단축키 등록!

article thumbnail
java lombok 라이브러리

lombok 이란? : 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리 getXXX, setXXX, 생성자, toString 등의 메소드를 한줄로 대체 가능하다!! wow 주요 어노테이션 @Getter : 변수들의 Getter 메소드를 만들어주는 어노테이션 @Setter : 변수들의 Setter 메소드를 만들어주는 어노테이션 @NoArgsConstructor : 어떠한 변수도 사용하지 않는 기본 생성자를 자동완성 시켜주는 어노테이션 @AllArgsConstructor : 모든 변수를 사용하는 생성자를 자동완성 시켜주는 어노테이션 @ToString : 클래스의 변수들을 기반으로 ToString 메소드를 자동완성 시켜주는 어노테이션 lombok 사용 전 public class BoardDto { pr..

article thumbnail
Servlet과 JSP
WEB/back-end 2023. 3. 21. 00:03

💡 Servlet, JSP 왜 쓸까? 동적 웹 어플리케이션을 제작하기 위해서는 프로그래밍 언어를 이용해야하기 때문에 Servlet이나 JSP를 사용한다! = 한 마디로, Java로 웹 어플리케이션을 만들어야 하는데, Java를 사용하기 위해서!! * 동적 웹 페이지 : 등록된 자원들 중 사용자의 요청에 따라 다른 결과들이 나오는 페이지 Servlet Java 코드 내 HTML 코드 자바를 사용하여 웹 서버에서 동적으로 생성한 웹 페이지를 웹 브라우저에 돌려줌 Servlet Life-Cycle 단순한 클래스가 서블릿 클래스가 되기 위해서는 서블릿 생명주기를 가져야 함 init(), service(), destroy() 순서의 생명주기를 추상 메소드로 갖는 인터페이스 = servlet 인터페이스 init()..

article thumbnail
BOJ 1584번: 게임
문제 풀이/백준 2023. 3. 18. 23:47

문제 문제 바로가기> BOJ 1584번: 게임 1584번: 게임 첫째 줄에 위험한 구역의 수 N이 주어진다. 다음 줄부터 N개의 줄에는 X1 Y1 X2 Y2와 같은 형식으로 위험한 구역의 정보가 주어진다. (X1, Y1)은 위험한 구역의 한 모서리이고, (X2, Y2)는 위험한 구역의 www.acmicpc.net 풀이 BFS 탐색을 진행하되, 안전한 구역인 경우, 그 구역에서 먼저 탐색을 진행해주기 위해 deque 자료구조를 이용했다!! #include #include #define MAX 501 #define DANGER 1 #define DEATH 2 using namespace std; struct DATA { int y, x, lose; }; int N, M; int map[MAX][MAX]; b..

article thumbnail
BOJ 2636번: 치즈
문제 풀이/백준 2023. 3. 18. 19:23

문제 문제 바로가기> BOJ 2636번: 치즈 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 풀이 치즈의 구멍인지, 빈칸인지 확이하기 위해서 4꼭지점에서 BFS 탐색을 시작해 주는게 핵심이다! C++ #include #include #define MAX 101 #define EMPTY 0 #define CHEESE 1 using namespace std; struct POS { int r, c; }; int R, C; int total = 0; int map[MAX][MAX]; bool visited[MAX][MAX..

article thumbnail
BOJ 2842번 : 집배원 한상덕
문제 풀이/백준 2023. 3. 10. 20:38

문제 문제 바로가기> BOJ 2842번 : 집배원 한상덕 2842번: 집배원 한상덕 상덕이는 언덕 위에 있는 마을의 우체국에 직업을 얻었다. 마을은 N×N 행렬로 나타낼 수 있다. 행렬로 나뉘어진 각 지역은 우체국은 'P', 집은 'K', 목초지는 '.' 중 하나로 나타낼 수 있다. 또, 각 www.acmicpc.net 풀이 고도를 ±1 씩 모든 경우의 수를 구할 경우 시간 초과가 발생한다. 50*50*1,000,000 = 2,500,000,000 (25억,,) 하지만 실제 고도의 개수는 50*50 = 2500을 초과할 수 없고, 이를 반영해서 "투 포인터 + 그래프 탐색"으로 풀었다. 1. 투포인터를 이용하기 위해 고도를 정렬해야 한다. 이때, 중복되는 값은 필요 없으므로!! set을 이용해서 중복되는..

article thumbnail
BOJ 1918번: 후위 표기식
문제 풀이/백준 2023. 3. 7. 16:43

문제 문제 바로가기> BOJ 1918번: 후위 표기식 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 풀이 #include #include #include #define MAX 32001 using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string expr; cin >> expr; stack st; // 우선 순위가 낮은 연산자 (+, -) 부터 큰 연산자 (*, /) 순으로 쌓임 // 연산자 우선 순위 : () > *..

article thumbnail
SWEA 5653번: 줄기세포 배양
문제 풀이/SWEA 2023. 3. 5. 19:59

문제 문제 바로가기> SWEA 5653번: 줄기세포 배양 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 1. 배열의 범위 세포가 (비활성 + 활성) 상태를 가지므로 N+2*K가 아닌, N+K로만 잡아줘도 충분하다! 넉넉히 +1 해주는 버릇이 있다. 혹시 모르니까,, start를 K/2로 해주면, 배열의 범위를 벗어날 일은 없어서, 따로 검사해주지 않아도 된다. 2. 하나의 그리드 셀에 동시 번식하려고 하는 경우 생명력 수치가 높은 줄기 세포가 해당 그리드 셀을 혼자서 차지한다. 따라서 생명력 수치가 높은 줄기 세포부터 번식 하면 되고, 이를 위해 Priority Queue를 이용했다! 처음에 2차원 배열..

article thumbnail
SWEA 2115번: 벌꿀채취
문제 풀이/SWEA 2023. 3. 4. 17:05

문제 문제 바로가기> SWEA 2115번: 벌꿀채취 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 1. 부분집합을 이용하여, 해당 지점(y, x) 에서 얻을 수 있는 가장 큰 수익을 profit[y][x]에 저장한다. 2. 조합을 이용하여, 일꾼 두명이 얻을 수 있는 최대 수익을 구한다. JAVA import java.io.*; import java.util.*; public class Solution { static BufferedReader br = null; static int N, M, C, ans; static int[][] map, profit; static void input() throws..