2021/11 5

[백준] 2309번 : 일곱 난쟁이 (C++)

2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 📚 문제 한 줄 요약 난쟁이의 키의 합이 100인 것을 이용해 아홉 명 중 누가 진짜 일곱 명의 난쟁이인지 알아내기 📚 문제 포인트 : 9명 중 7명의 키의 합이 100, 키를 오름차순으로 출력 📚 풀이 (핵심 : 아홉 명 중 일곱 명 골라내는 방법 생각하기) 여기서 포인트는 아홉 명 중 합이 100이 되는 일곱 명을 알아내는 것인데 이를 달리 말하면 입력받은 데이터 중 두 개의 값을 빼서 합이 100이 되는 값을 찾아라는 말과 같다. 위를 이용해서 for문으로 전체 탐..

Algorithm 2021.11.28

[백준] 1978번 : 소수 찾기 (C++)

1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 📚 문제 한 줄 요약 최대 100개의 1000보다 작은 수가 주어졌을 때 소수가 몇 개인지 구하기 📚 풀이 (핵심 : 어떻게 소수인지 판별하는 연산을 구현할 것인가?) 문제 해결 순서는 다음과 같이 계획했다. 1. 입력 데이터 받기 (숫자의 개수 N, 숫자) 2. 소수 구하기 3. 소수의 개수 출력하기 소수를 구하는 과정은 다음과 같이 구현했다. // 미리 소수 개수를 증가시킨다.(1은 소수가 아니므로 제외.) if (num >= 2) primeNum++; for (int i = 2; i*i

Algorithm 2021.11.27

[백준] 4375번 : 1 (C++)

4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 📚 문제 한 줄 요약 1로만 이루어진 n의 배수 중 가장 작은 자릿수 찾기 📚 고민한 부분 1. 입력이 언제가 마지막인지 알 수 없는데 어떻게 입력받아야 할까? 이 부분은 예전에 같은 유형은 겪은 적이 있어서 쉽게 해결했다. 아래 링크의 문제 풀이를 참고하였다. ▶ https://nhee-devlog.tistory.com/2 2. 자릿수를 늘린 수열 값을 그대로 저장하면 변수 최대 크기를 넘기는데 어떻게 처리해야 할까? 이는 mod값을 이용하는 걸로 해결하였다. 자세한 내용은 풀이에서 다루었다. 📚 풀이 (핵심 : 어떻게..

Algorithm 2021.11.25

[백준] 1037번 : 약수 (C++)

문제 링크 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 문제 한 줄 요약 약수를 이용해서 원래 숫자 N 구하기 풀이 (핵심 : 약수로 어떻게 N을 구할 수 있느냐를 생각해내기) N을 가장 작은 수로 나눈다면 몫은 가장 큰 수가 될 것이다. 반대로, N을 가장 큰 수로 나눈다면 몫은 가장 작은 값이 될 것이다. 즉, 주어진 약수의 최솟값과 최댓값을 곱하면 N의 값이 나오게 될 것이다. (단, 약수가 하나일 때는 약수의 제곱을 해준다.) 이를 이용해 다음과 같은 순서로 문제를 해결했다. 1. 입력 데이..

Algorithm 2021.11.23