알고리즘 :: 백준 :: 1325 - 효율적인 해킹
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악N개의 컴퓨터 ≤ 10,000, M개의 관계도 ≤ 100,000컴퓨터 번호는 1번부터 N번한 번에 가장 많이 해킹할 수 있는 컴퓨터 번호를 오름차순으로 (하나면 한개, 두 개 이상이면 오름차순으로)✏️ 문제풀이트리도 그래프의 일종임을 생각하면 어렵지 않게 접근법을 생각할 수 있습니다. 입력으로 들어오는 A, B는 'A가 B를 신뢰한다' = 'B를 해킹하면 A도 해킹할 수 있다' = B → A로 생각할 수 있습니다. 즉, 문제에서 말하는바와는 반대방향으로 간선이 만들어지는 겁니다. A가 B를 신뢰하지만, 간선은 B에서 A를 향하도록 만들어집니다 이렇게 간선을 이어서 트리를 형성했을 때, 한 번에 가장 많이 해킹할 수 있는 컴퓨터란, 해당 노드를 시점으로 DF..
알고리즘 :: 백준 :: 1436 - 영화감독 숌
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악입력: N ≤ 10,000출력: N번째 종말의 수✏️ 문제풀이함정문제입니다.0666, 1666, 2666, 3666, 4666, 5666,6660, 6661, …., 6669, 7666, 8666, 9666총 19개… 그게 10666부터 11666까지…이렇게 빠져들기 시작하면 이 문제의 함정에 빠진 것입니다 ㅎㅎ함정에 걸리는 가장 큰 이유는 N이 10,000까지 가능해 오버플로우가 될 수도 있다고 생각하기 때문입니다. 단순하게 666부터 카운팅하면서 1,000으로 나머지연산(`%`)한 것이 666인 수를 찾으면 됩니다.while (temp) { if (temp % 1000 == 666) { answer++; break; } temp..
알고리즘 :: 백준 :: 4375 - 1
·
Problem Solving
❔문제 🔗문제링크 🔄 문제 및 입출력 조건 파악입력: 각 테스트케이스마다 2와 5로 나누어 떨어지지 않는 정수 N(1 ≤ N ≤ 10000)출력: 각 자릿수가 모두 1로만 이루어진 n의 배수의 자릿수✏️ 문제풀이[Tip] 정해지지 않은 입력 개수 입력받기 = `while (cin >> n)` 1. 증명하기이 문제는 정답을 정수 자료형에(`int`(12자리), `unsigned long long`(20자리)) 담을 수 없습니다.따라서 구해야하는 답인 '자릿수'에 집중해봅시다. $x$가 n의 배수라는 뜻은, $x \pmod n = 0$ 이라는 뜻입니다.그리고, 모듈로 연산(`%`)은 분배법칙이 성립합니다. $x \pmod n = 0$ 이고, $x$를 이전 규칙으로 표현하면 $((x\div10) - 1) ..
알고리즘 :: 백준 :: 2309 - 일곱 난쟁이
·
Problem Solving
❔문제  🔗문제링크  🔄 문제 및 입출력 조건 파악입력: 9명 키, 100을 넘지 않음출력: 키 합 100인 7명 조합 아무거나✏️ 문제풀이난쟁이 9명 중 7명을 뽑아 구한 키의 합이 100일 때 출력하는 bruteforce 문제입니다.9명 중 7명을 뽑는 것($_9C_7$)은, 9명 중 2명을 뽑는($_9C_2$) 경우의 수와 같습니다. 총 인원의 키 합에서 100을 뺀 값을 `diff`라 할 때2중 for문을 돌려서 선택한 2명의 키 합이 `diff`면 출력합니다.재귀함수를 돌려서 2명을 선택하고, 키 합이 `diff`면 출력합니다.오름차순으로 출력해야 하기 때문에, 2중 for문을 돌리던, 재귀함수를 돌리던 먼저 정렬부터 하는 것을 잊지 맙시다.📝 코드2중 for문 방법#include usin..