알고리즘 :: 백준 :: 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..
알고리즘 :: 백준 :: 3474 - 교수가 된 현우
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악입력: 테스트 케이스 T입력: 각 테스트 케이스마다 정수 1 ≤ N ≤ 1,000,000,000출력: $N!$를 나타냈을 때 오른쪽 끝에 있는 0의 개수✏️ 문제풀이당연히 `int`든 `unsigned long long`이든 수의 범위를 가볍게 넘어가기 때문에 직접 계산하는 문제가 아닙니다 ㅎㅎㅎ 0을 만들기 위해서 필요한 '재료'는 2와 5가 있습니다.$N!$를 나열하는 과정에서 2, 4, 6, 8 ... 정말 많은 2가 생성됩니다. 즉, 2라는 재료는 넘쳐난다는 뜻입니다.따라서, 0을 만들기 위한 '핵심재료'는 5입니다. $N!$ 속에 5가 몇 개 있느냐에 따라 0의 개수가 결정됩니다.코드로 나타내면 정말 간단합니다.for (int i = 5; i N ..
알고리즘 :: 백준 :: 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) ..
알고리즘 :: 백준 :: 1629 - 곱셈
·
Problem Solving
❔문제 🔗문제링크 🔄 문제 및 입출력 조건 파악입력: 2,147,483,647 이하의 자연수 A, B, C출력: A를 B번 곱한 수를 C로 나눈 나머지  ($A^B \pmod C$)✏️ 문제풀이첫 시도 :: 잘못된 접근나누는 수에 따라 나머지가 반복되는 성질이 있는 일부 수가 있는데, 모든 수가 그럴 것이라 생각하고 풀었습니다.그러나, 반드시 모든 수가 나머지가 반복되진 않습니다.ull A, B, C, result = 1;cin >> A >> B >> C;set s;while (B--) { result = (result * A) % C; if (s.find(result) != s.end()) break; s.insert(result);}cout `std::set`을 이용해서, 나머지가 반복될 때 멈춥..
알고리즘 :: 백준 :: 9375 - 패션왕 신해빈
·
Problem Solving
❔문제 🔗문제링크 🔄 문제 및 입출력 조건 파악입력:테스트케이스 T ≤ 100의상 개수 ≤ 30의상 한 종류는 하나만 입을 수 있음중복 이름 없음, 모두 소문자로 구성출력: 총 경우의 수✏️ 문제풀이 '의상종류'칸에는 하나의 '의상'만 들어갈 수 있습니다.'안 입는다, 안 쓴다' 라는 선택지를 포함하면 위 그림과 같습니다.중요한 것은 '의상종류'와 그 종류에 포함된 의상의 개수입니다. 또한, 의상은 중복해서 입력되지 않습니다.따라서 문자열 '의상종류'와 이에 포함된 의상 개수를 카운트 하기 위해 `std::map`를 사용하는 것이 적절하겠습니다.📝 코드#include using namespace std;int main() { ios::sync_with_stdio(false), cin.tie(null..