전체 글 96

백준 1927 : 최소 힙

1927 : 최소 힙문제 풀이다들 우선순위 큐가 최소 힙 기반이라는거 알고계셨나요? 저는 방금 알았는데요.. 실행 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.PriorityQueue;public class P1927 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder();..

백준 1260 : DFS와 BFS(오늘의 교훈 : 문제를 잘 읽자)

문제문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 된다. 실..

11727 : 2 x n 타일링2 (DP)

11727 : 2xn 타일링 2문제2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×17 직사각형을 채운 한가지 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)  출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.  문제 풀이풀어버림.....사실 2xn 첫번째 문제 덕분에 푼 듯..?점화식 > dp[n-1] + dp[n-2] * 2dp[n-1]은 경우가 하나뿐임 그냥 세로타일 채우기dp[n-2]는 정사각형, 세로두개, 가로두개 이렇게 경우가 3개인데 세로 두개는 dp[n-1]에서 들어가니께 뺀다! 실행 코드import java.util.Scanner;public class P1..

백준 9095 : 1, 2, 3 더하기(DP)

9095 : 1, 2, 3 더하기문제정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.1+1+1+11+1+21+2+12+1+12+21+33+1정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.입력출력34710744274 문제 풀이점화식+1을 하는 경우+2를 하는 경우+3을 하는 경우를 다 더함dp[j] = dp[j - 1] + dp[j - 2] + dp..

백준 2579 : 계단 오르기(DP)

2579 : 계단 오르기문제계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다.계단 오르는 데는 다음과 같은 규칙이 있다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단은 반드시 밟아야 한다.따라서 첫 번..

객체지향이란?

프로그래밍 패러다임절차적 프로그래밍함수적 프로그래밍객체지향 프로그래밍 객체지향 프로그래밍객체지향 프로그래밍은 프로그래밍 패러다임 또는 프로그래밍 스타일을 의미한다.코드를 구성하는 기본 단위 : 클래스, 객체캡슐화, 추상화, 상속, 다형성캡슐화정보 은닉, 데이터 액세스 보호라고도 하며, 접근 가능한 인터페이스를 제한하여 클래스가 제공하는 메서드를 통해서만 내부 정보나 데이터에 대한 외부 접근을 허가하는 것을 뜻한다. 쓰다만사람같으세여?오해입니다

코드 품질 평가 방법

유지 보수성기존의 코드 설계를 손상시키거나 새로운 버그를 발생시키지 않고 빠르게 코드를 수정하거나 추가할 수 있는 상태를 말한다. 가독성"컴퓨터가 이해할 수 있는 코드는 바보라도 작성할 수 있다. 사람이 이해할 수 있는 코드를 작성해야한다."코드의 명명주석함수길이모듈 구분코드의 높은 응집도와 낮은 결합도 확장성기존의 코드를 약간 수정하거나 전혀 수정하지 않고도 확장을 통해 새로운 기능을 추가하는 것코드를 작성할 때 새로운 기능을 추가할 수 있는 여지가 설계 당시부터 고려되어 있어 확장용 인터페이스가 이미 존재함을 의미 유연성코드의 확장과 재사용이 용이하고 사용성이 높을 경우를 말한다. 간결성KISS원칙 : 코드를 가능한 단순하게 유지 재사용성반복적인 코드 작성을 최소화하고 기존 코드를 재사용하는 것 테스..

IOC / DI / AOP

IOC(Inversion of Control)"제어의 역전" 즉, 객체나 메소드의 생명주기를 개발자가 관리하는 것이 아닌 외부(프레임워크)에서 결정하는 것이다. 개발자는 객체를 직접 생성하지 않고 필요한 객체를 프레임 워크에 요청하면 프레임워크가 알아서 생성하고 메모리에 올려서 관리한다. //IOC 없음public class OrderService { private PaymentService paymentService = new PaymentService(); // 직접 생성}//IOC 사용public class OrderService { @Autowired private PaymentService paymentService; // 스프링이 주입}   DI(Dependency Inject..

[ 런타임에러 ] /by zero

듣도보도 못한 오류임 0으로 나누기 (division by zero)가 발생했을 때 나타나는 오류 • 반복문에서 값 감소로 인해 0이 됨조건문으로 0을 확인하거나, 반복문의 종료 조건을 조정하세요. • 사용자 입력값이 0사용자 입력값을 항상 검증하여 처리하세요. • 수식에서 변수 값이 0으로 설정코드 로직을 확인하여 0이 될 가능성을 배제하거나, 0일 경우 기본값을 설정하세요.

[ 알고리즘 ] 최소 신장 트리, 최단 거리 알고리즘

최소 신장 트리신장 트리 : 그래프의 모든 정점을 포함하는 트리최소 신장 트리 : 가중치가 있는 그래프에서 간선의 가중치 총합이 가장 작은 신장 트리  프림 알고리즘(Prim algorithm) - 정점 기준그리디 알고리즘으로, 임의의 정점을 시작점으로 트리를 확장하면서 최소 신장 트리를 생성하는 방식이다. 💡 프림 알고리즘 과정시작점부터 뻗어 나가는 간선 중 가장 작은 가중치를 가진 노드로 연결한다.시작점과 연결한 노드에서 뻗어 나가는 간선 중 가장 작은 가중치를 가진 노드로 연결한다.반복한다.  크루스칼 알고리즘(Kruskal algorithm) - 간선 기준그리디 알고리즘으로, 간선을 오름차순으로 정렬한 뒤 가중치가 낮은 간선을 선택하면서 최소 신장 트리를 생성한다. 💡 크루스칼 알고리즘 과정..

[ STUDY ]/CS 2024.11.17