목록전체 글 (245)
말랑한 하루
[ 핵심풀이 ] 0) 사람들이 오는 시간이 랜덤하게 들어오므로, 입력받고 소팅해주어야한다! 1) 사람이 시간초에 왓을때, 만들어질 수 있는 붕어빵의 개수를 구한다 2) 사람이 시간초에 왔을때, 그전에 받아간 사람이 있는지 확인한다 3) 사람이 시간초에 왔을때, 만들어진 붕어빵의 개수보다 받아간사람이 많거나 같다면 이사람은 받을 수 없다 [ 핵심소스 ] for(int item : ary) { now = (item/M)*K; if (now-yet
[ 문제 ] 더보기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. 출력 첫 번째 줄에는 총 단지수를 출력하시오..
[ 문제 ] 더보기 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 E(1≤E≤200,000)가 빈 칸을 사이에 두고 순서대로 주어진다. 각 정점에는 1부터 V까지 차례로 번호가 붙어 있다. 이어서 둘째 줄부터 E개의 줄에 걸쳐 간선에 대한 정보가 주어지는데,..
[ 문제 ] 더보기 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. 출력 첫째 줄에 연결 요소의 개수를 출력한다. [ Java ] package BFS_DFS; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList;..
[ 시간복잡도 ] [ 핵심풀이 ] : 아래 소스코드기준 -차가 들어올 때 (type>0) 1) 주차공간이 남아있는지 확인한다 → park 2) 주차가 가능하다면 맨 첫번째 주차공간부터 주차한다 3) 주차시 주차중인 차갯수(park), 주차공간(visit), 차량이 주차한공간(parking), 지불해야할 요금(car*pay) 값들을 변경 4) 만약 주차공간이 남아있지않다면, 그차는 대기시킨다 (q) -차가 나갈 때 (type>0) 1) 주차중인 차갯수(park), 주차공간(visit), 차량이 주차한공간(parking) 값들을 변경 2) 한 자리가비었으므로 대기중인 차가 있다면 주차시작 (park, q) 3) 차가 들어올 때의 경우와 똑같이 진행. [ 핵심소스 ] 문제를 읽다 명령어 개수에대해 파악하지 못..
[ 시간복잡도 ] [ 핵심풀이 ] String의 substring으로 만드는 방법과 StringBuilder의 charAt(index, value)로 변경하는 방법 두가지가있다. 참고 하면 좋을것같다. [ 핵심소스 ] StringBuilder sb = new StringBuilder(temp3); if (temp3.charAt(i) == '0') { sb.setCharAt(i, '1'); l3.add(Long.parseLong(""+sb, 3)); } [ Java ] import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class _4366_정식이의_은행업무 { static String temp2; stati..
[ 시간복잡도 ] [ 핵심풀이 ] 길이가 다를경우와 B만 정확하게 볼 수 있는 경우를 걸러주면된다. [ 핵심소스 ] if (temp1.charAt(s) == 'B' || temp2.charAt(s) == 'B') { if(temp1.charAt(s) != temp2.charAt(s)) { flag=false; System.out.println("DIFF"); break; } continue; } [ Java ] import java.util.Scanner; public class _7272_안경이없어 { public static void main(String[] args) { int alpha[] = { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,..
[ 시간복잡도 ] [ 핵심풀이 ] Collections의 PriortyQueue를 잘 사용할 수 있느냐 묻는 문제이기도 했다. PriorityQueue의 경우 Default가 가장 작은수가 맨 위에 오게되므로 Collections.reverseOrder()을 사용하여 가장 큰 수가 맨 위에 오도록 해야한다. [ 핵심소스 ] PriorityQueue q = new PriorityQueue(Collections.reverseOrder()); [ Java ] import java.util.Collections; import java.util.PriorityQueue; import java.util.Scanner; public class _2930_힙 { static void init() { Scanner sc..