목록전체 글 (244)
지우너
문제https://www.acmicpc.net/problem/11650 코드import java.util.*;public class Main { public static final int MAX_N = 1000; public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder sb = new StringBuilder(); int n = sc.nextInt(); List arr = new ArrayList(); for (int i = 0; i comp = new Comparator() { @Override p..
문제https://www.acmicpc.net/problem/2011 풀이문제 이해하기예제1) 251142까지만 보면 {B} = 125까지 보면 {BE('2', '5'), Y('25')} = 2251까지 보면 {BEA('2', '5', '1'), YA('25', '1')} = 22511까지 보면 {BEAA('2', '5', '1'. '1'), BEK('2', '5', '11'), YAA('25', '1', '1'), YK('25', '11')} = 425114까지 보면 {BEAAD('2', '5', '1'. '1', '4'), YAAD('25', '1', '1', '4'), YAN('25', '1', '14'), YKD('25', '11', '4'), BEKD('2', '5', '11', '4'), BE..
문제https://www.acmicpc.net/problem/2133 풀이문제 이해하기우선 문제를 이렇게 바꿔보자. 3xN칸 채우기 → 두 자연수의 합으로 N을 만들기N=3이라고 했을 때, 3을 만드는 방법은 1+2, 2+1이 있다.N=4라고 하면, 4를 만드는 방법은 1+3, 2+2, 3+1이 있다.N=6, 6을 만드는 방법 1+5, 2+4, 3+3, 4+2, 5+1...이런 식으로 진행이 된다. 이제 3xN칸을 채워보자 3x1을 채울 수 있는 방법은 어떻게 채워도 존재하지 않는다.3x2를 채우는 방법은 위의 그림과 같이 3가지 존재한다. 3x3은 1+2, 혹은 2+1, 3 이렇게 채울 수 있다.1을 채우는 방법이 존재하지 않으므로, 1+2, 2+1로 채우기는 불가능하다.3을 채우는 특별한 방법이 존재..
문제https://school.programmers.co.kr/learn/courses/30/lessons/120882 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드#include #include using namespace std;vector solution(vector> score) { vector answer; for(int i=0; iiAvg) num++; } answer.push_back(num); } return answer;}
크루스칼 알고리즘 (Kruskal Algorithm)MST를 구하는 알고리즘 중 하나 크루스칼 알고리즘을 이용하는 예시N개의 도시가 있는데, 그래프 구조로 되어 있는 길을 모두 건설할 돈이 없어서 최소한의 비용만 투자하여 모든 도시를 어떻게든 이어주려고 합니다. 관련 개념Spanning Tree: 최소한의 간선을 사용하여 모든 정점을 연결한 그래프MST(Minimum Spanning Tree): 가중치가 있을때 최소한의 비용을 사용한 Spanning Tree. 트리이기 때문에 사이클이 존재하면 안 됨.→ Union-Find를 이용하여 사이클 유무 판별 크루스칼 알고리즘 구현 방법간선들을 저장한 후가중치를 오름차순으로 정렬간선 목록(vector, list, array 등)을 순회하면서 가중치가 작은 순으..
문제https://www.acmicpc.net/problem/3040 코드#include #include using namespace std;vector dwarf(9);vector picked;bool isAnswer(){ int sum=0; for(auto e:picked){ sum+=e; } if(sum==100) return true; else return false;}void dfs(int curr_idx){ if(curr_idx+1>9 || picked.size()>=7){ if(picked.size()==7 && isAnswer()){ for(auto e:picked){ cout > dwa..