전체 글667 [백준] 16486번 - 운동장 한 바퀴 [Java] https://www.acmicpc.net/problem/16486 1. 아이디어 둘레의 길이는 원의 둘레와 직사각형 윗변과 아랫변의 길이의 합으로 구할 수 있다.2. 문제풀이 아이디어 그대로 구현했다.3. 코드 import java.io.*;public class Main { private static final double PI = 3.141592; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int d1 = Integer.parseInt(br.readLine()); .. 2025. 3. 20. [백준] 1717번 - 집합의 표현 [Java] https://www.acmicpc.net/problem/1717 1. 아이디어 유니온 파인드 알고리즘으로 해결할 수 있다.2. 문제풀이 각 집합의 합집합 연산은 union, 같은 집합에 있는 지 확인하는 연산은 find로 구할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static int[] p; private static int[] make(int N) { int[] arr = new int[1 + N]; for (int i = 1; i 4. 후기 2025. 3. 20. [백준] 1976번 - 여행 가자 [Java] https://www.acmicpc.net/problem/1976 1. 아이디어 여행을 가려는 도시가 모드 하나의 그래프 안에만 있으면 되므로 유니온 파인드 알고리즘으로 해결할 수 있다.2. 문제풀이 union 연산으로 그래프를 구성한 후 Set을 활용해 여행가려는 각 도시의 그룹장을 저장했다.Set의 크기가 1이면 모든 도시가 하나의 그래프 안에 있는 것이므로 여행을 갈 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static int[] p; private static int[] make(int N) { int[] arr = new int[1 + N]; for (int i = .. 2025. 3. 20. [백준] 1043번 - 거짓말 [Java] https://www.acmicpc.net/problem/1043 1. 아이디어 유니온 파인드 알고리즘을 통해 각 파티를 집합으로 표현한 후 각 파티의 그룹장만 따로 담아준다.이후 각 파티의 그룹장이 진실을 아는 지 판단했다.2. 문제풀이 진실을 아는 사람은 부모의 번호를 0번으로 설정했고 파티의 그룹장은 번호가 작은 사람이 오도록 했다.유니온 파인드 알고리즘을 통해 그룹을 형성한 후 그룹장만 따로 Queue에 담아줬다.이러면 Queue의 그룹장의 부모(최고 조상)이 0인지 여부로 그룹에 진실을 말해야하는지 간단하게 판단할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static int[] p; priv.. 2025. 3. 20. [백준] 1946번 - 신입 사원 [Java] https://www.acmicpc.net/problem/1946 1. 아이디어 두 성적 모두 다른 지원자 보다 떨어지는 자는 선발하지 않으므로 한 성적을 기준으로 정렬한 후 순회하며 정렬 기준이 아닌 다른 성적에 대해 이전 모든 지원자 보다 떨어지면 선발하지 않으면 된다.2. 문제풀이 성적은 1부터 N 중 중복되지 않는 수 이므로 1차원 배열을 활용해 한 성적을 인덱스, 한 성적은 값으로 하면 인덱스로 한 성적을 기준으로 정렬이 된 것으로 볼 수 있다. 배열을 순회하며 값의 최솟값을 갱신하며 저장하고 이 값을 현재 배열의 값과 비교하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(S.. 2025. 3. 18. [백준] 16479번 - 컵라면 측정하기 [Java] https://www.acmicpc.net/problem/16479 1. 아이디어 등변 사다리꼴의 높이의 제곱은 피타고라스 정리를 활용하면 간단하게 구할 수 있다.밑변이 더 짧으므로 (윗변의 길이 - 밑변의 길이) / 2를 밑변, K를 가장 긴변으로 하는 직각삼각형의 높이를 구하면 된다.2. 문제풀이 Math.pow 메서드를 활용해서 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)).. 2025. 3. 18. [백준] 1252번 - 이진수 덧셈 [Java] https://www.acmicpc.net/problem/1252 1. 아이디어 이진수의 덧셈을 하는 문제로 이진수의 길이가 최대 80이어서 int나 long 같은 기본 타입으로는 처리하기 어렵다.배열을 활용해 직접 이진수의 덧셈을 구하는 방법과 큰 수 연산에 활용할 수 있는 BigInteger 클래스의 메서드를 활용하는 방법 2가지로 해결했다.2. 문제풀이 배열을 활용할 경우 덧셈으로 자릿수가 넘어가는 것을 고려해서 두 수 중 길이가 더 긴 수의 길이보다 1 크게 잡았다. 일단 덧셈을 수행한 후 뒤에서부터 순회하며 자릿수 이동을 구현하고 앞의 0을 제외하고 출력하도록 했고 출력 결과가 0인 경우에 대한 예외처리를 했다.3. 코드 import java.io.*;import java.util.*;publ.. 2025. 3. 14. [백준] 11501번 - 주식 [Java] https://www.acmicpc.net/problem/11501 1. 아이디어 최대 이익을 내려면 현재 날짜보다 이후 날짜 중 더 비싼 날이 있을 때 이중 가장 비싼 날 팔아야한다. 이를 위해 뒤에서부터 순회하며 해당 날짜의 가격이 현재까지 찾은 최대 가격보다 싸면 사서 팔고 비싸면 최대 가격을 갱신하는 과정을 반복했다.2. 문제풀이 아이디어 그대로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(.. 2025. 3. 13. [백준] 2089번 - -2진수 [Java] https://www.acmicpc.net/problem/2089 1. 아이디어 음수로 진법 변환은 양수로 진법 변환과 기본 원리는 동일한데 나머지가 항상 양수가 되도록 조절만 해주면 된다.2. 문제풀이 진법 변환을 위해 몫과 나머지를 구하는 과정에서 나머지가 음수가 되면 몫을 하나 더 크게 잡고 나머지를 양수로 만드는 과정을 반복하면 된다. 0이 입력으로 주어질 수 있음에 주의해야 한다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Syst.. 2025. 3. 12. [백준] 17070번 - 파이프 옮기기 1 [Java] https://www.acmicpc.net/problem/17070 1. 아이디어 파이프 옮기기 2에서 경우의 수가 줄어든 문제로 동일하게 다이나믹 프로그래밍으로 해결할 수 있다.Top-Down 방식과 Bottom-Up 방식 두가지로 해결했다.([코딩테스트 준비/백준] - [백준] 17069번 - 파이프 옮기기 2 [Java])2. 문제풀이 두 가지 방식 모두 오른쪽 끝단의 정보를 갖고 dp 테이블을 갱신했다. dp는 위치와 파이프가 놓인 방향까지 고려해야해서 3차원 배열로 행, 열, 방향을 모두 고려했다.3. 코드 import java.io.*;import java.util.*;public class Main_TopDown_DP { private static int N; private st.. 2025. 3. 12. [프로그래머스] 67258번 - 보석 쇼핑 [Java] https://school.programmers.co.kr/learn/courses/30/lessons/67258 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 개발자 출신으로 세계 최고의 갑부가 된 어피치는 스트레스를 받을 때면 이를 풀기 위해 오프라인 매장에 쇼핑을 하러 가곤 합니다.어피치는 쇼핑을 할 때면 매장 진열대의 특정 범위의 물건들을 모두 싹쓸이 구매하는 습관이 있습니다.어느 날 스트레스를 풀기 위해 보석 매장에 쇼핑을 하러 간 어피치는 이전처럼 진열대의 특정 범위의 보석을 모두 구매하되 특별히 아래 목적을 달성하고 싶었습니다. 진열된 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾아서 구매 예를 들어 아래 진열대는 4종류의 보석(RUBY,.. 2025. 3. 10. [백준] 17069번 - 파이프 옮기기 2 [Java] https://www.acmicpc.net/problem/17069 1. 아이디어 방법의 수가 매우 많아질 수 있어서 다이나믹 프로그래밍으로 해결할 수 있다.Top-Down 방식과 Bottom-Up 방식 두가지로 해결했다.2. 문제풀이 두 가지 방식 모두 오른쪽 끝단의 정보를 갖고 dp 테이블을 갱신했다. dp는 위치와 파이프가 놓인 방향까지 고려해야해서 3차원 배열로 행, 열, 방향을 모두 고려했다.3. 코드 import java.io.*;import java.util.*;public class Main_TopDown_DP { private static int N; private static int[][] map; private static long[][][] dp; public.. 2025. 3. 10. 이전 1 2 3 4 ··· 56 다음