일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 10813 자바
- 1010 자바
- IAM 사용자
- 자바 2346
- 자바 10866
- 백준 2346 자바
- dfs
- 자바 2164
- 자바 1003
- 티움투어
- 데보션영 3기
- 2748 자바
- 백준 1764 자바
- 10807 자바
- 자바
- BFS
- 28278 스택 2
- 10810 자바
- 그리디
- 1764 자바
- 백준
- 백준 10866 자바
- 자바 28278
- 2798 자바
- 2346 풍선 터뜨리기
- 백준 28278 자바
- 코딩테스트
- IAM Identity Center
- 파이썬
- 2164 자바
- Today
- Total
목록코딩테스트/Java (57)
자두의 데브로그
https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 오랜만에 스택/큐 푸니까 다 까먹은 게 레전드.. 역시나 꾸준히 하는 게 매우 중요하구나!!! 오늘부터 다시 시작!!!!Deque 선언할 때 LinkedList랑 ArrayDeque 둘 중 하나 사용해야함answer만 Deque로 선언하여 만약 answer에 가장 최근에 저장한 값이 현재 arr 인덱스에 해당하는 값과 동일하면 딱히 작업을 하지 않고, 다를 때만 answer에 arr 인덱스에 해당하는..

https://www.acmicpc.net/problem/2606 1과 연결된 정점들과 연결된 또 다른 정점들의 값을 세면 되는데 이때 dfs로 동일하게 탐색하는데 만약 1과 연결되어있지 않고 끊어져 있으면 dfs로 탐색이 되지 않는다. 그렇기 때문에 dfs 함수를 거친 만큼만 count++ 해주면 된다.import java.io.*;import java.util.*;public class Main { public static boolean[] visited; public static ArrayList> graph = new ArrayList(); public static int count = 0; public static void main(String[] args) throws I..

https://www.acmicpc.net/problem/24444 값 입력 받는 건 동일하지만 bfs 함수 구현하는 것만 차이가 있다. queue를 하나 만들고 시작 정점부터 정점에 인접한 정점 중 작은 수부터 방문하게 된다. 이때 dfs는 예를 들어 정점 1과 인접한 정점이 2, 4가 있었을 때 2를 방문한 뒤에는 2와 인접한 정점을 방문하게 되는데 bfs의 경우는 2를 방문한 뒤, 1과 인접해있는 4를 그 다음으로 방문하게 된다는 게 차이가 있다. 즉, graph.get(1) 의 모든 결과 값을 다 방문하도록 구현해야돼서 큐를 사용한다고 생각하면 된다.import java.io.*;import java.util.*;public class Main { public static int[] visi..

https://www.acmicpc.net/problem/24479https://www.acmicpc.net/problem/24480 DFS를 자바로 구현해본 적이 없어서 푼 가장 기초적인 DFS 문제 ! ArrayList> 로 이차원 배열을 선언해서 푼다는 걸 잘 알아두면 될 것 같다! [새로 알게 된 것]Collections.sort() 로 오름차순 정렬 가능Collections.sort(ArrayList, Collections.reverseOrder()) 로 내림차순 정렬 가능// 24479번import java.io.*;import java.util.ArrayList;import java.util.Collections;import java.util.StringTokenizer;public clas..

https://www.acmicpc.net/problem/1735 두 개의 분수를 입력한 다음 분수의 합을 구하는 문제였다. 여기서 특징은 기약분수를 구해야한다는 것이었는데! 어떻게 구현해야될지 고민하다가 max랑 min을 사용하여 분자와 분모 중 더 큰 수까지 나눠가면서 약수를 가진다면 나눠서 기약분수로 만들 수 있도록 구현하였다. 근데 풀고 보니 풀이 자체가 틀린 건 아니지만 너무 요상해서 다른 문제 풀이 방법을 좀 찾아봤다.import java.io.*;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader b..
https://www.acmicpc.net/problem/19532 브루트포스 문제인 걸 까먹고 연립 방정식 손으로 풀 듯이 다 구현해서 돌려봤는데 틀렸다고 했다. 물론 어디가 틀린 건지 파악하지는 못했지만 생각해보니까 답이 나올 때까지 -999부터 999까지 i와 j를 돌려가면서 c와 f를 만족하는 그 순간의 i와 j를 출력하면 되는 문제라 싹 지우고 다시 풀었다. 브론즈 문제인 이유가 있었구나,, 허무해~!import java.io.*;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buf..
https://www.acmicpc.net/problem/2231 어제 문제 풀면서 브루트포스 문제를 조금 더 풀어봐야겠다고 생각이 들어 쉬운 문제부터 차례로 풀어보기 시작했다! for문 내에서 while문 돌릴 때 for문에서 사용하는 변수가 아닌 임시 변수 tmp를 사용하여 i의 값을 조정해가며 문제를 풀면 됐다. 문제 자체는 어렵지 않았지만 해당 부분을 생각을 못해 i를 냅다 나누고 또 나누고,,, 이래서 무한 루프에 갇혀서 답이 안나오는 문제가 있었다. 그치만 해결 ^^! * 빠르게 짚고 가는 브루트포스 간단 개념 브루트포스: 완전탐색 알고리즘가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져오는 알고리즘 알고리즘 설계 방법해가 존재할 것으로 예상되는 모든 영역을 전체 탐색..
https://www.acmicpc.net/problem/15649 백트래킹 문제였는데, dfs로 풀면 됐다. 사실 dfs 구현하는 것도 까먹어서 다른 사람들 코드를 참고해야했지만.. n은 방문할 노드의 개수, m은 방문하는 깊이에 대한 값이라고 생각하면 됐다.visit 배열을 통해 방문 여부를 체크하여 중복 방문하지 않도록 했다. 내일은.. 다른 사람 코드의 도움 없이 백트래킹 혼자 풀어보자!!! import java.io.*;import java.util.StringTokenizer;public class Main { public static int[] arr; public static boolean[] visit; public static StringBuilder sb = new S..
https://www.acmicpc.net/problem/2164 [문제 이해]문제 그대로 카드가 순서대로 있을 때 하나의 카드가 남을 때까지 가장 위의 카드는 버리고, 두 번째 카드는 가장 아래에 있는 카드 밑으로 옮기면서 마지막으로 남은 카드의 숫자를 출력하면 되는 문제였다. [문제 풀이]deque를 사용해서 문제를 풀어봤다면 어렵지 않게 풀 수 있는 문제였다. 먼저 입력 받은 숫자까지의 카드를 deque에 저장하기 위해 offerLast()함수를 사용한다. 이후로는 규칙에 맞게 반복문을 돌리되, deque 내의 원소의 개수가 1개보다 많을 때까지만 돌리면 된다. 가장 앞의 카드를 버리기 위해서 removeFirst()함수를 사용하고 한 번 더 두 번째 카드를 뒤로 보내기 위해 앞에서 removeFi..