본문 바로가기
728x90

전체 글192

[CodeUp:2062]Up2(DFS) 문제 설명재현이는 Up 1 문제에서 자기의 집을 띄우는데 성공하였다!하지만 헬륨이 빠지면서 집은 다시 땅으로 내려오게 되었다.헬륨이 왜 빠졌는지를 보자 풍선의 위치가 문제인 것을 알게 되었다.지붕에는 층이 있다. 층은 0부터 9까지이다.재현이는 지붕의 0층에 모든 풍선을 달자 연결부위가 약해져서 풍선이 날아간 것으로 추측한다.재현이는 그래서 각 층에는 서로 최대한 많이 연결되어 있는 곳에만 풍선을 달려고 한다.입력첫번째 줄에 m, n이 입력된다.(1두번째 줄에 지붕의 지도가 m*n형식으로 입력된다.숫자는 층이고 -1은 풍선을 달 수 없는 곳이다.출력풍선의 최대수를 각 층마다 출력한다.0개인 층은 출력하지 않아도 된다. 또한, 층은 오름차순으로 출력한다. 입력 예시 5 10 -1 1 1 1 1 1 -1 .. 2026. 7. 16.
[CodeUp:1512]숫자 등고선(맨해튼 거리, 완전 탐색) 문제 설명어느날 등산을하다가 길을 찾기 위해 지도를 보다가 땅의 높낮이를 표시되어 있는 등고선을 보면서 문득 2차원 배열로 숫자등고선을 만드는 문제가 생각났다.여러분들은 배열크기 N과 시작위치 X , Y를 입력받아 숫자등고선을 만드시오.예를 들어 배열크기가 5이고 시작위치가 3 , 4 라면 3,4로 시작하는 다음과같은 숫자등고선을 만들수 있다.6 5 4 3 45 4 3 2 34 3 2 1 25 4 3 2 36 5 4 3 4입력배열의 크기 N의 범위는 1출력숫자등고선을 출력한다. 숫자와 숫자 사이는 공백을 출력한다.입력 예시 예시 복사5 3 4출력 예시6 5 4 3 4 5 4 3 2 3 4 3 2 1 2 5 4 3 2 3 6 5 4 3 4 맨허튼의 거리 : 도로를 따라서 직각으로만 움직일 때, 두 지.. 2026. 7. 16.
Comparable vs Comparator 1. Comparable vs ComparatorComparable객체 자체가 기본 정렬 기준을 가진다.compareTo()를 구현한다.클래스 내부에 작성한다.class Member implements Comparable { @Override public int compareTo(Member o) { return this.age - o.age; }}사용Collections.sort(list);암기: "내가 비교할게." (객체 내부)Comparator객체 외부에서 정렬 기준을 만든다.compare()를 구현한다.여러 정렬 기준을 만들 수 있다.Comparator ageComparator = Comparator.comparing(Member::getAge);사용lis.. 2026. 7. 7.
정보처리기사 최종 합격 후기 (실기 공부 방법) 드디어 정보처리기사를 끝냈습니다.남들은 취업 전에 다 (한번에?) 따는 자격증인데 저에게는 너무나도 오래 걸렸습니다.웹 개발자로 일한지 4년차 인데도 N수 끝에 합격했습니다.IT머리가 없는지, 공부 머리가 없는지 모르겠습니다.(사실 SQLD도 3트만에 땄습니다) 그래도 어쩔 수 없습니다 ;다른 직업을 갖기에는 달리 재능이 있는 영역도 없고 그냥 느리더라도 꾸준하게 가야 할 뿐입니다. 1. 필기 시험 2024년 2월 16일 필기 시험을 보고 합격한 후 개인적인 이유로 2025년에 실기시험에 도전했습니다. 2. 2025 정기 기사 실기 1회 불합 2025 정기 기사 1회 실기 보고난 후 너무 어려워서 눈물이 났습니다. >>> 멧챠 어려움 + 방금 공부하고 온 내용이 생각이 안남 그래도 나름 칸은 채워.. 2025. 9. 15.
백준 2839 JAVA DP 설탕 배달 https://www.acmicpc.net/problem/2839 5kg과 3kg에 최소의 포대를 사용해서 넣어야 함.5kg을 최대한 많이 넣어야 좋음. 1. 설탕이 5의 배수인지 살펴보고, 배수이면 몫이 정답. 2. 설탕이 3미만인지 본다. 3kg포대가 최소 용량이기 때문에 -1을 리턴한다. 3. 3kg 포대에 하나 채우고, 나머지 설탕을 다시 1번부터 시작해본다. 18kg일 경우 18 -> 5의 배수 아님 / -3 (포대+1) -> 15 -> 5의 배수임 (포대 + 15/5 ) = 1 + 3 = 4 import java.io.*;public class Main { public static void main(String[] args) throws IOException { Buffe.. 2025. 4. 22.
[JAVA/dp]백준 1463 : 1로 만들기 https://www.acmicpc.net/problem/1463 1. 주어진 수 n이 1이 되기 위한 최소 경로의 수를 담아주는 배열 지정. dp[n] = x 면 n이 1이 되기 위한 최소 경로의 수 x를 뜻함. 그렇기 때문에 dp의 길이는 dp[n+1] 로 지정해야함.(0이 들어가니까) 2. dp[0] 과 dp[1]은 0이 됨. 3. 2부터 n까지 반복(n포함) 4. 처음 dp[i]는 전의 경로의 수에서 +1 한 만큼 (i-1 +1 = i 이기 때문에 ) 설정해줌 (-1 수식 반영)dp[i] = dp[i-1]+1 5.2로 나눠지는지 3으로 나눠지는지에 따라서 나눈 몫의 경로의 수 + 몫까지 간 경로 1 dp[i] = dp[i/2] + 1 6. 4번과 5번의 경로의 수를 비교하여 작은 수를 대입해줌.. 2025. 4. 22.
이분탐색 입국심사 JAVA 프로그래머스 코딩테스트 https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr import java.util.*;class Solution { public long solution(int n , int[] times){ long answer = 0; Arrays.sort(times); //오름차순 정렬 long min = 1; long max = (long)times[times.length-1]*2; //배열의 마지막(가장 긴 시간)*대기인원.. 2025. 3. 21.
프로그래머스 동적계획법 사칙연산 JAVA 어려움 https://school.programmers.co.kr/learn/courses/30/lessons/1843 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  1. 연산자를 제외한 숫자의 개수int n = (arr.length + 1)/2; 예를들어 1 + 3 - 5 + 7 - 8 가 있으면arr.length = 9(9+1)/2 = 51, 3,5,7,8 => 5개   2. 뺄샘 연산이 비대칭이기 때문에 maxDP 와 minDP 를 따로 저장해야 한다.MAX- MIN 과 MIN - MAX는 다름5-3 과 3-5 는 다른것처럼 int[][] maxDP = new int[n][n];int[][] minDP.. 2025. 3. 14.
동적계획법(Dynamic Programming) 도둑질 자바 https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr class Solution { public int solution(int[] money) { int answer = 0; //바로 money로 받아오면 dp_first와 dp_second는 각각 money 배열을 새로운 배열로 복사하는 것이 아니라, // money 배열 자체를 가리키게 됩니다. 즉, dp_first, dp_second, money가 모두 같은 배열을 공유하게 됩니다. .. 2025. 3. 14.
프로그래머스 동적계획법(Dynamic Programming) 정수 삼각형 자바 https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 거쳐간 숫자의 최댓값을 구해야 하는데,위에서부터 밑으로 내려오면서 비교하면 복잡해진다. 어차피 최댓값 하나만 구하면 되기 때문에 밑에서부터 올라가면서 최댓값을 더해 마지막 꼭대기에 최댓값이 남도록 하자.  그럴려면 기존의 삼각형이 아닌,더한 값을 저장하는 빈 삼각형이 필요하다.빈 삼각형의 마지막 줄은 기존 삼각형과 동일하다. (베이스 동일) class Solution{ public int solution(int[][] triangle){ .. 2025. 3. 5.
728x90