본문 바로가기

분류 전체보기

(142)
백준 - 17070번 파이프 옮기기 1 - java https://www.acmicpc.net/problem/17070 이전 파이프의 상태에 따라서 다음 파이프가 3가지 타입으로 선택이 가능함 접근법 경우의 수를 따지는 BFS로 접근하였는데, 대부분 DP로 푼것 같다,, TODO DP로 푸는법도 해봐야할듯 끝좌표를 기준으로 BFS 탐색을 하는데, Pipe클래스를 만들어서 이전 파이프 타입을 챙김 curType의 값에 따라 3가지로 분기해서 경우를 따져보고, 해당되면 queue에 넣어줌 현재 좌표가 끝지점이면 answer값 올려주고, 다음 경우 탐색 애초에 끝지점이 1이면, 무조건 불가하니 0 출력하고 리턴 소스 import java.util.*; import java.io.*; public class Main { static int N; static in..
백준 - 1719번 택배 - java https://www.acmicpc.net/problem/1719 접근법 다익스트라로 최단거리를 구하기 위해 ArrayList[] ADJ 배열을 생성함 배열에 양방향으로 간선 연결을 해줌2차원 배열로 하게되면, 연결되어있는지 아닌지 n번 탐색을 해야하는데, arrayList면 size만큼만 탐색하면 되니 시간을 아낄 수 있음 각각의 노드를 기준으로 다익스트라 함수를 탐색 path[] 배열로 현재 노드의 앞 노드를 기록해둠 출력 시, 현재 노드면 -를 출력 그게 아니라면, 현재 노드에서 앞 노드를 찾고, 그게 끝인지 보고 아니면 또 앞 노드, ... 반복하여 출력 소스 import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..
백준 - 11048번 이동하기 - java https://www.acmicpc.net/problem/11048 접근법 기본적인 DP 풀이법 핵심은 DP[nextX][nextY] < DP[x][y] + Array[nextX][nextY]를 판단해서 더 큰 경우 DP배열을 갱신해주고 출력할 때는 마지막 (N-1, M-1)값을 출력해줌 소스 import java.util.*; import java.io.*; public class Main { static int N, M; static int[][] Array; static int[][] DP; static int[][] dir = {{1,0},{0,1},{1,1}}; public static void main(String[] args) throws IOException { BufferedReader ..
은행 적금 금리 순위 2023년 08월 2주차 Top: 10 은행 적금 상품 목록우리은행상품명: 우리SUPER주거래적금가입방법: 영업점,인터넷,스마트폰,전화(텔레뱅킹)안내: 만기 후 - 1개월이내 : 만기시점약정이율×50% - 1개월초과 6개월이내: 만기시점약정이율×30% - 6개월초과 : 만기시점약정이율×20% ※ 만기시점 약정이율 : 일반정기적금 금리안내2: - 최대 연 1.9%p 우대 1. 신규 시 최대 1.0%p ①첫 거래 고객 : 연 1.0%p 2.거거래기간 실적 충족시 최대 0.9%p ①급여,연금이체를 하거나 다이렉트 해외송금 실적: 연 0.5%p ②공과금 자동이체 : 연 0.2%p ③우리카드실적 및 당행 결제계좌 지정 : 연 0.2%p비고: -거래실적인정기간:신규일이 포함된 달로부터 만기일이 속한 달의 전전달까지 -우대조건 필수 충족기간 : 1년: 6..
은행 예금 금리 순위 2023년 08월 2주차 Top: 10 은행 예금 상품 목록우리은행상품명: WON플러스예금가입방법: 인터넷,스마트폰,전화(텔레뱅킹)안내: 만기 후 - 1개월이내 : 만기시점약정이율×50% - 1개월초과 6개월이내: 만기시점약정이율×30% - 6개월초과 : 만기시점약정이율×20% ※ 만기시점 약정이율 : 일반정기예금 금리안내2: 해당사항 없음비고: - 가입기간: 1~36개월 - 최소가입금액: 1만원 이상 - 만기일을 일,월 단위로 자유롭게 선택 가능 - 만기해지 시 신규일 당시 영업점과 인터넷 홈페이지에 고시된 계약기간별 금리 적용최대예치금액: N/A금리구분예치개월기본이율최대이율단리123.683.68단리63.653.65단리243.33.3단리363.33.3한국스탠다드차타드은행상품명: e-그린세이브예금가입방법: 인터넷,스마트폰안내: 만기 후 1개월..
백준 - 11779번 최소비용 구하기 2 - java https://www.acmicpc.net/problem/11779 접근법 기본적인 다익스트라 알고리즘으로 접근함 GRAPH라는 배열에 시작지점 인덱스에 도착지와 가중치를 Node로 담아두고, 입력으로 받는 시작지점과 끝지점으로 함수 시작 dir이라는 배열을 하나 두었는데, 해당 인덱스로 도착할 때 출발했던 인덱스를 저장함. 단, 가중치가 가장 작은 경우에만 갱신하며 이는 큐에 offer할때와 같은 시점에 이루어짐 우선순위 큐를 이용해야 시간초과 안뜸 if(weight[cur.index] < cur.weight) continue으로 현재 가중치 비교해서 건너뛰어줘야 시간을 아낌. 이 라인은 기존 다익스트라에서 해주지 않았던것 같은데 최소 비용만 출력하면 weight배열값만 출력하면 되는데, 방문한 도시 ..
백준 - 2623번 음악프로그램 - java https://www.acmicpc.net/problem/2623 접근법 기본적인 위상정렬문제로 쉽게 해결! 위상정렬의 핵심은 inDegree 배열. 각 인덱스별로 앞서 필요한 항목의 수 만큼 count를 가지고 있고, 조치가 취해지면 count를 깍아나가는 식으로 접근하면 됨 graph는 선행 -> 후행의 관계를 잡기위해 마련한 변수. 입력에 따라 선행, 후행 관계를 graph 배열의 인덱스에 맞게 생성. 생성하면서 후행이 되는 인덱스는 inDegree 배열 값도 올려줌 초기에는 inDegree배열이 0인 값 = 선행조건이 없는 값을 Queue에 넣어주고 반복문 소스 import java.util.*; import java.io.*; public class Main { static int N; // 가..
백준 - 1600번 말이 되고픈 원숭이 - java https://www.acmicpc.net/problem/1600 참고하게된 블로그 https://simju9397.tistory.com/25 접근법 처음에는 DFS로 풀이를 하였는데, 메모리초과가 나옴. 전체탐색하는 방법으로 생각해서 그런건데 잘못접근하여서 BFS로 바꿈. Point객체는 좌표 x, y와 이동한 횟수, 말처럼이동한 횟수를 가짐 Dir배열은 0~7은 말처럼 이동하는 경우의 좌표이고, 8~11은 일반 상하좌우 이동 일반 BFS처럼 Queue 생성해서 방문여부 체크하며 진행하는데, 여기서 시간초과나오고 했던 부분이 있음Visit x, y, z 배열의 의미가 중요한데, '말처럼 Z번 움직여서 X, Y좌표에 방문하였는가?'를 의미함 3-1. Z는 0번부터 K번까지이므로 크기는 K+1 짜리 3차원..