일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 1764 자바
- 28278 스택 2
- 자바 1003
- 자바 2346
- 파이썬
- 백준 10866 자바
- 2748 자바
- 2798 자바
- 자바 2164
- 코딩테스트
- 자바 10866
- 2164 자바
- 백준
- 10810 자바
- 1764 자바
- 1010 자바
- dfs
- 자바
- 티움투어
- 그리디
- 2346 풍선 터뜨리기
- BFS
- 10807 자바
- 백준 2346 자바
- 자바 28278
- 10813 자바
- 백준 28278 자바
- IAM 사용자
- 데보션영 3기
- IAM Identity Center
- Today
- Total
목록코딩테스트 (102)
자두의 데브로그

https://www.acmicpc.net/problem/1325 일단 이 문제는 단방향 그래프이기 때문에 한 쪽에만 갈 수 있는 정점에 대한 정보를 저장해야되는 게 특징이었다. 근데 나는 아직도 ArrayList 안에 배열 넣는 걸 선언하는 게 어렵다. 헷갈려요.., 무튼 입력 잘 받아주고 나서 처음에 dfs로 구현을 했는데.. 채점을 돌렸더니 1분동안 채점을 하는 엄청나게 시간이 오래 걸리는 코드를 구현해버렸다. 이와중에 dfs로 구현할 때 for문으로 구현하면 시간초과가 난다고 한다. dfs 구현 자체는 어렵지 않았다. 원래 알고 있는 dfs대로 잘 구현만 하면 됐고, 가장 많은 컴퓨터를 해킹하는 수를 미리 저장해두고 해당 값을 갖는 인덱스를 출력하는 방식으로 구현했다.import java.io.*..
https://www.acmicpc.net/problem/1697 약간 오랜만에 이런 새로운 문제 푸니까 어려웠는데 문제를 풀기 전 어떤 식으로 문제 풀이를 생각했냐하면....동생이 있는 곳으로 이동할 수 있는 방법이 총 세 가지이기 때문에 bfs에서 탐색할 때 첫 번째 위치에서 갈 수 있는 곳이 총 3개다. 그러니까 상하좌우 문제처럼 다 가봐야한다. 만약 변경한 값이 동생이 있는 곳과 동일하면 바로 return하고 아니라면 queue에 add 하고 변경된 값의 인덱스에 해당하는 visited 값에 1을 더해주면 되는 문제였다. 이 문제는 꼭!!!!! 다시 풀어보자. import javax.management.Query;import java.io.*;import java.util.*;public clas..
https://www.acmicpc.net/problem/11725 dfs나 bfs로 풀면 금방 풀 수 있는 문제 같았다. 근데 오랜만에 상하좌우로 탐색하는 게 아니라 데이터를 ArrayList 배열에 저장해서 푸는 문제였어서 처음 입력 받는 걸 헤맸다. ArrayList가 Integer 형태로 받아서 for문에서 크기 비교가 안됐었는데 크기 비교할 필요 없이 array[x] 내에 있는 값을 가져오면 되는 거였어서 for(int i: array[x]) 이런 식으로 구현하면 됐었다. 예를 들어 가장 처음에 루트 노드인 1이 들어간다면, 예시로 1 4 를 입력 받고 있었으니, visited[1]은 true가 되며 i는 4가 되고, 그럼 visited[4]는 방문하지 않았으니 parent[4]는 1이 되는 방..
https://www.acmicpc.net/problem/2178 지나가는 최소 칸 수를 구해야하기 때문에 dfs와 bfs 중 bfs로 풀어야 한다고 한다. dfs로 풀어보진 않았지만 dfs로 풀면 시간 초과가 난다는 소식이 ... 푸는 방법은 크게 어렵지 않고 동일하게 상하좌우 방향 지정해서 인접한 곳을 방문하는 방식으로 풀면 된다. (0, 0)에서 시작하면 되고 지나가는 길마다 직전에 지나왔던 길의 값에 1을 더해주면 가장 오른쪽 아래 즉, 마지막으로 방문해야하는 곳에 도달했을 때 몇 개의 칸을 지나왔는지 알 수 있다. import java.io.*;import java.util.*;public class Main { static int[] dx = {0, 0, 1, -1}; static ..
https://www.acmicpc.net/problem/2667 모든 2차원 배열을 탐색하면서 인접한 경우에 대해 단지로 묶는 문제였다. DFS, BFS 문제 중에서 개인적으로 많이 어렵게 느끼는 dx, dy 사용해서 상하좌우 탐색하고, 인접한 경우에 대해 판별해야하는 문제이다. 전에 풀었던 문제에서 많이 익숙해져서 동일하게 풀었는데 풀면서 헷갈렸던 부분은 어디서부터 cnt를 늘려줘야할지였다. 처음에 cnt는 1로 초기화해두고 (dfs에 들어가는 순간 단지에 하나의 가구는 포함된 상태) 시작하고, dfs 함수 내에서 cnt를 증가시켜주고 가장 먼저 dfs를 호출한 main 함수 내에 있는 dfs의 실행이 끝나면, cnt를 ArrayList에 add 하여 값을 저장한다. 총 단지의 수는 각 단지의 가구..
https://www.acmicpc.net/problem/1012 dfs나 bfs를 사용하여 푸는 문제로 위, 아래, 왼, 오 네 가지 방향으로 가보면서 만약 인접한 노드가 있으면 방문하면서 최소한으로 배추흰지렁이를 구입하도록 하는 문제였다. 아직 생으로 dfs, bfs 문제를 푸는 게 좀 어려워서 다른 사람의 코드를 참고하여 dfs와 bfs 모두를 사용하여 풀어보았다. 사실 어떤 식으로 푸는지 감은 오는데 막상 혼자 풀어보려고 하면 잘 안풀린다. 동일한 문제를 반복적으로 풀어보면서 내가 어떤 부분이 약한지 파악하는 것도 필요할 것 같다. import java.io.*;import java.util.LinkedList;import java.util.Queue;import java.util.StringTo..
https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 오랜만에 스택/큐 푸니까 다 까먹은 게 레전드.. 역시나 꾸준히 하는 게 매우 중요하구나!!! 오늘부터 다시 시작!!!!Deque 선언할 때 LinkedList랑 ArrayDeque 둘 중 하나 사용해야함answer만 Deque로 선언하여 만약 answer에 가장 최근에 저장한 값이 현재 arr 인덱스에 해당하는 값과 동일하면 딱히 작업을 하지 않고, 다를 때만 answer에 arr 인덱스에 해당하는..
5월 식품들의 총매출 조회하기SELECT fp.PRODUCT_ID, PRODUCT_NAME, (PRICE * SUM(AMOUNT)) AS TOTAL_SALES FROM FOOD_PRODUCT fp JOIN FOOD_ORDER fo ON fp.PRODUCT_ID = fo.PRODUCT_ID WHERE PRODUCE_DATE LIKE "2022-05%" GROUP BY fp.PRODUCT_ID ORDER BY TOTAL_SALES desc, fp.PRODUCT_ID; 주문량이 많은 아이스크림들 조회하기SELECT FLAVOR FROM ( SELECT * FROM FIRST_HALF UNION SELECT * FROM JULY) as A GROUP BY FLAV..
조건에 맞는 도서와 저자 리스트 출력하기-- 코드를 입력하세요SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE FROM BOOK b JOIN AUTHOR a ON b.AUTHOR_ID = a.AUTHOR_ID WHERE CATEGORY = "경제" ORDER BY PUBLISHED_DATE; 없어진 기록 찾기-- 코드를 입력하세요SELECT o.ANIMAL_ID, o.NAME FROM ANIMAL_INS i RIGHT JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID WHERE i.ANIMAL_ID is NULL; [새롭게 알게 된 것]JOIN을 했을 때 RIGHT..