일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- BFS
- java
- 2501
- SWEA
- 프로그래머스
- 백준 퇴사
- EditorInfo
- 지능형 기차2
- 백준 14501
- EditText
- 자바
- dfs
- 오르막수
- 순열
- 완전탐색
- 순수함수
- Parcelable
- BuildConfig
- hilt
- imeOptions
- Parcelize
- 최단경로
- 시뮬레이션
- val
- 스카이라인 쉬운거
- Android
- Kotlin
- 백준
- 조합
- 약수 구하기
- Today
- Total
목록알고리즘 (70)
안드 공부를 해볼까?
1. 문제분석 https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제가 이해가지 않았지만 예제풀이를 보고 해결했다. 장훈이가 너무 커서 물건을 쌓아올린 것을 직원들이 힘을 합쳐 꺼낼려고 한다. 직원들끼리 탑을 쌓아서 물건을 가져와야하고 물건과 탑의 차가 가장 적은 것을 구하면 된다. 필자는 조합으로 풀었다. 모든 조합의 경우의 수를 구하고 탑이 물건의 높이보다 크고 그 차가 가장 작은 값을 출력하면 된다. 2. 구현 import java.io.BufferedReader; import java.io.IO..
1. 문제 분석 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWsBQpPqMNMDFARG SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 백준에서 불! 과 같은 문제다. BFS 문제로 1초마다 수연이는 한칸씩, 부식되는 곳 또한 계속 상하좌우로 한칸씩 움직인다. 필자는 수연이가 움직이는 큐, 부식되는 큐로 나누어서 풀었다. 주의할 점은 1초마다 부식되는 것으로 모든 큐를 싹 뽑아서 부식을 체크하고 큐에 넣는 식으로 해야한다. 2. 구현 package samsung01; import java.util.*; import ..

1. 문제 분석 주어진 숫자에 연산자를 넣는 문제다. 연산자의 개수는 주어진 숫자 - 1 만큼 주어지므로 순열을 통해 연산자의 집합을 구하면 된다. 2. 구현 import java.util.*; import java.io.*; public class Solution { static int size; static int[] numArr; static ArrayList operList = new ArrayList(); static int max = Integer.MIN_VALUE; static int min = Integer.MAX_VALUE; public static void main(String[] args) throws IOException { BufferedReader br = new Buffered..

1. 문제 분석 문제를 제대로 이해해보자. 하루단위로 국가마다 연합을 만들고 인구이동을 하는 것이다. 필자는 인구이동이 일어났다면 하루라고 생각해서 시간이 꽤 걸렸다. DFS를 사용했고 연합이 만들어지는 조건을 달성하면 합쳐주고 합칠 국가가 없으면 걸린 날짜를 반환한다. 연합이 만들어지는 조건은 다음과 같다 1. 배열의 인덱스 값을 벗어나면 안된다. 2. 이미 방문한 곳은 가면 안된다. 3. L과 R 사이의 수여야만 한다. 3번 조건을 위해 절댓값을 활용했다(Math.abs) 2. 구현 import java.util.*; import java.io.*; class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } } public clas..

1. 문제분석 최단거리가 가장 긴 지점에 보물이 있는 것이다. 처음 그림에서 보물섬을 보여주고 그 다음 보물이 뭍힌 곳을 보여줘서 따로 구하고 해야하나 싶지만 그럴 필요가 없다. 보물은 두 지점사이의 거리가 가장 긴 곳에 있으므로 L이 있는 부분에서 BFS를 통해 각 지점별 거리를 구하면 된다. 2. 구현 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; class Point { int x, y, dist; Point(int x, int..

1. 문제분석 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 앞서 본 치즈랑 비슷하지만 오히려 더 쉬운문제다. 1시간마다 4방향으로 바닷물과 접촉한다면 접촉한 수만큼 빙산의 크기를 1씩 낮춘다. 그 다음, 4방향으로 연결된 빙하의 개수가 2개 이상이면 그때 시간을 표시한다. 만약 시간내에 2개 이상으로 안나오면 0으로 표시한다. 필자는 델타탐색 + BFS로 문제를 해결했다. 녹지 않았을 때 BFS를 통해 빙하의 개수를 구하고 visite..

1. 문제분석 https://www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 그림이 많아 링크로 올렸다. 외부공기와 접촉하면 치즈가 사라지는 형태다. 필자는 외부공기, 내부공기, 치즈로 나누는거까지 했지만 외부공기를 구하는 식에서 걸렸다. 구글링을 했는데 어짜피 배열의 가장자리는 항상 외부공기이므로 0,0에서 BFS던 DFS던 하면 되는 것 이다. 외부공기는 -1, 치즈는 1, 내부공기는 0인 상태로 구분하면 된다. (0,0)에서 탐색을 시작해 외부공기를 구하고 치즈가 외부공기..

1. 문제분석 알파벳 모음으로 길이 5이하의 단어를 만든다고 한다. 그 때 주어진 word는 몇번째 있는지 찾는 문제다. 헷갈리면 안되는것은 AAAAA, AAAAE 처럼 만들어진다고 해서 그냥 배열에 모음 4개씩, 총 25개 넣으면 난리가 난다. 문제는 길이 5 이하의 단어다. 그렇다면 바로 중복 부분수열을 통해서 구하면 된다 A가 5개 있어도 상관없고 E가 5개 있어도 상관없다. 주어진 5개의 단어로 길이 5이하의 모든 부분 수열을 구하면 된다. 2. 구현 import java.util.ArrayList; import java.util.Comparator; public class Solution { ArrayList list = new ArrayList(); public static void main(..