반응형

백준 58

[백준] 1946 : 신입 사원 (JAVA)

https://www.acmicpc.net/problem/1946 [풀이과정]N이 10만이라 두 값을 모두 탐색하게 되면 이중포문이라 시간초과가 나기 때문에 한 값만 비교하게 하는 방향으로 고민했다.먼저 서류 등수를 기준으로 오름차순 정렬을 한 후 면접 등수를 비교하며 한 번의 탐색으로 값을 구했다. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.StringTokenizer;public class Main { s..

백준/완전탐색 2025.05.26

[백준] 14889 : 스타트와 링크 (JAVA)

https://www.acmicpc.net/problem/14889 [풀이과정]N/2를 선택해주고 팀 능력치 계산해주기 [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/*축가 - 평일 오후, 필참x사람 N명 (N은 짝수)N/2씩 스타트팀, 링크팀으로 나누기1번부터 N번.능력치 Sij는 i와 j가 같은 팀에 속했을 때의 능력치 (Sji와 다를 수 있음)i와 j가 같은 팀이면 Sij + Sji 가 더해짐.능력치 차이를 최소로 하려 함. */public class Main { static BufferedReader br = n..

백준/완전탐색 2025.04.28

[백준] 2573 : 빙산 (JAVA)

https://www.acmicpc.net/problem/2573 [풀이과정]계속 시간초과가 나서 미치는 줄 ㅠㅠ한 번의 탐색으로 가능한 작업을 여러 탐색으로 했던 게 문제였다.new보다는 fill로 배열을 재사용하는 게 더 낫다는 걸 배움. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/*칸의 높이는 바다와 인접한 면의 개수만큼 줄어듦.0이하로는 줄어들지 않음빙산이 두 덩어리 이상으로 분리되는 최소의 시간(년)을 구하기 */public class Main { static BufferedReader br = new BufferedReader(n..

백준/DFS BFS 2025.04.23

[백준] 10816 : 숫자카드2 (JAVA)

https://www.acmicpc.net/problem/10816 [풀이과정]HashMap 사용.이분탐색 방식은 이분탐색을 두 번 돌려서 한 번은 left 값을, 한 번은 right 값을 구해서 개수를 구하기. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/*카드 N개정수 M개가 주어졌을 때 이 수가 적혀있는 카드를 몇 개 가지고 있는지 구하기 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static..

백준/자료구조 2025.04.14

[백준] 2805 : 나무자르기 (JAVA)

https://www.acmicpc.net/problem/2805 [풀이과정]나무 길이를 골라야 하는데 길이의 최댓값이 너무 커서 이분탐색을 사용했다.1. 나무를 정렬2. 가장 긴 나무길이를 high로 두고 이분탐색 시작 3. 충족하는 길이가 나오면 결과값을 갱신해주며 low 값 갱신 [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Collections;import java.util.StringTokenizer;/*나무 M미터가 필요.1. 높이 H를 지정 -> 한 줄에 연속해있는 나무 모두 절단2. 잘린 나무 획득..

백준/이분탐색 2025.04.07

[백준] 1654 : 랜선자르기 (JAVA)

https://www.acmicpc.net/problem/1654 [풀이과정]이분탐색 문제다.오랜만에 풀어서 로직이 헷갈렸는데 mid 값 갱신 시 +1, -1 해주기. low는 0으로 두지 말기. 두 가지 복기하자. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/*K개의 랜선 보유 - 길이가 다 다름N개의 같은 길이의 랜선으로 만들기 위해 K개의 랜선을 자르기(ex. 300cm : 140cm 두 개를 위해 20cm 버려야 함)N개보다 많이 만드는 것도 N개를 만드는 것에 포함.만들 수 있는 최대 랜선의 길이 구하기 */pub..

백준/이분탐색 2025.04.03

[백준] 14940 : 쉬운 최단거리 (JAVA)

https://www.acmicpc.net/problem/14940 [풀이과정]메모리 초과 이유1. 각 지점을 출발점으로 해서 도착지점까지의 거리를 구하고, 이때 이미 구해진 지점이 있으면 depth랑 해당 값을 더해주고 탐색 마치는 로직으로 구현했는데 메모리 초과가 떴음. 매 지점마다 queue를 생성하고 탐색해서 그런 듯.도착지점을 시작점으로 두고 나머지 지점까지의 거리를 구하면 됨.  2. visited 체크를 queue에서 뽑을 때 하고 있었음. 상하좌우 탐색하는 로직 내부에 넣어야 하는데 이런 실수 다신 하지 말자 [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import j..

백준/DFS BFS 2025.04.01

[백준] 15666 : N과 M(12) (JAVA)

https://www.acmicpc.net/problem/15666 [풀이과정]중복되는 부분을 어떻게 해결해야 하는지 고민하다가 시간이 오래 걸렸음.DFS로 재귀호출 시에 for문 시작 index를 이전 DFS와 같게 하되 배열[index]의 값이 다른 경우에만 값을 sb에 넣게 했다.이렇게 해야 중복 없는 수열이 나옴. [코드]import java.util.*;import java.lang.*;import java.io.*;/*N개 중 M개 고르기중복 가능오름차순*/class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringBuilder sb = new Stri..

백준/DFS BFS 2025.03.24

[백준] 17140 : 이차원 배열과 연산 (JAVA)

https://www.acmicpc.net/problem/17140 [풀이과정]Node class가 Comparable 인터페이스를 상속하게 함.PriorityQueue를 사용해서 정렬해가며 배열 재구성 [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;import java.util.PriorityQueue;import java.util.StringTokenizer;/*크기가 3X3인 배열 A1. R연산 : 배열 A의 모든 행에 대해 정렬 수행. 행의 개수 >= 열의 개수인 경우 적용2. C연산 : 배열 A..

백준/구현 2024.12.07

[백준] 2668 : 숫자고르기 (JAVA)

https://www.acmicpc.net/problem/2668 [풀이과정]시작 index와 끝 배열값이 같으면 되는 문제다. (사이클) [코드]import java.util.*;import java.io.*;/*세로 두 줄, 가로로 N개의 표첫째 줄은 1, 2, 3, ..., N둘째 줄은 N이하의 정수첫째 줄에서 숫자를 뽑으면 뽑힌 정수들이 이루는 집합과뽑힌 정수들의 바로 밑의 둘째 줄에 들어있는 정수들이 이루는 집합이일치함정수를 최대한 많이 뽑는 방법을 찾기 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringBuilder sb = n..

백준/DFS BFS 2024.11.22
반응형