본문 바로가기

브론즈182

[백준 15829] Hashing [C] 풀이 힌트를 보면 쉽게 이해할 수 있다. 단, long long 데이터 형식의 범위를 초과하는 것을 방지하기 위해 중간 계산과정에서 MOD로 나눈 나머지를 저장했다. 소스코드 #include #define MOD 1234567891 int main(){ char str[51]; long long result = 0, r = 1; int L; scanf("%d %s", &L, str); for (int i = 0; i < L; i++){ result = (result + (str[i]-'a'+1) * r) % MOD; r = (r*31) % MOD; } printf("%lld", result); } 출처 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 .. 2021. 7. 25.
[백준 2775] 부녀회장이 될테야 [C] 풀이 층, 호를 입력받을 때마다 거주민을 구하는 방식보다는, 처음부터 모든 층, 호의 거주민을 구하는 방법이 효율적이다. k층 1호는 항상 1명이 거주한다. 0층 n호는 n명 거주한다. k층 n호의 거주민은 k층 n-1호, k-1층 n호 거주민의 합과 동일하다. 소스코드 #include #define F 15 #define NO 14 int main(){ int T, k, n, arr[F][NO]; for (int i = 0; i < F; i++) for (int j = 0; j < NO; j++) arr[i][j] = ((i&&j) ? arr[i][j-1] + arr[i-1][j] : (i?0:i)+j+1); scanf("%d", &T); while (T--){ scanf("%d %d", &k, &n).. 2021. 7. 25.
[백준 2231] 분해합 [C] 풀이 4673 - 셀프 넘버 문제와 비슷하다. 단, 생성자의 여부가 아닌, 가장 작은 생성자를 출력해야 한다. 생정자의 범위는 N - 자리수 * 9 부터 N-1이다. 만약 생성자를 구하지 못했다면, 0을 반환한다. 소스코드 #include int selfNum(int n){ int cnt = 0, temp = n; for (; temp > 0; temp /= 10) ++cnt; for (int i = n - 9*cnt; i 0; temp /= 10) result += temp%10; if (result == n) return i; } return 0; } int main(){ int N; scanf("%d", &N.. 2021. 7. 25.
[백준 2292] 벌집 [C] 풀이 중앙의 방으로부터 둘러싼 방의 개수는 6, 12, 18, ... 6의 배수이다. 때문에 입력받은 방의 번호에서 6의 배수만큼 뺴서 몇 개의 방을 지나는지 계산한다. 소스코드 #include int main(){ int N, cnt; scanf("%d", &N); for (cnt = 1; N > 1; cnt++) N -= (6*cnt); printf("%d", cnt); } 출처 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 2021. 7. 23.
[백준 1712] 손익분기점 [C] 풀이 손익분기점을 넘기 위한 판매량은 A / (C - B) + 1의 정수값과 같다. B가 C이상일 때는, 판매량에 상관없이 절대로 손익분기점을 넘을 수 없다. 소스코드 #include int main(){ long A, B, C; scanf("%ld %ld %ld", &A, &B, &C); if (B >= C) puts("-1"); else printf("%lld", A/(C-B)+1); } 출처 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 2021. 7. 23.
[백준 2522] 별 찍기 - 12 [C] 소스코드 #include #include int main(){ int N; scanf("%d", &N); for (int i = -N + 1; i < N; i++){ for (int j = 0; j < N; j++) putchar(j < abs(i) ? 32 : '*'); putchar(10); } } 출처 2522번: 별 찍기 - 12 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 2021. 7. 23.