[백준 10996] 별 찍기 - 21 [C] 소스코드 #include int main(){ int N; scanf("%d", &N); for (int i = 0; i < 2*N; i++){ for (int j = 0; j < N; j++) putchar((i+j)%2 ? 32 : '*'); putchar(10); } } 출처 10996번: 별 찍기 - 21 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net PS/Baekjoon Online Judge 2021.08.07
[백준 10995] 별 찍기 - 20 [C] 소스코드 #include int main(){ int N; scanf("%d", &N); for (int i = 0; i < N; i++){ for (int j = 0; j < 2*N; j++) putchar((i+j)%2 ? 32 : '*'); putchar(10); } } 출처 10995번: 별 찍기 - 20 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net PS/Baekjoon Online Judge 2021.08.06
[백준 10953] A+B - 6 [C] 소스코드 #include int main() { int T, A, B; scanf("%d", &T); while (T--){ scanf("%d,%d", &A, &B); printf("%d\n", A+B); } } 출처 10953번: A+B - 6 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net PS/Baekjoon Online Judge 2021.08.04
[백준 10870] 피보나치 수 5 [C] 풀이 "백준 2747, 피보나치 수"와 동일한 방법으로 풀이할 수 있다. 소스코드 #include int fibo(int n){ int fiboNum[2] = {0, 1}; for (int i = 1 ; i < n; i++) fiboNum[(i+1)%2] = fiboNum[i%2] + fiboNum[(i-1)%2]; return fiboNum[n%2]; } int main(){ int n; scanf("%d", &n); printf("%d", fibo(n)); } 출처 및 참고자료 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1.. PS/Baekjoon Online Judge 2021.07.31
[백준 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에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 .. PS/Baekjoon Online Judge 2021.07.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).. PS/Baekjoon Online Judge 2021.07.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.. PS/Baekjoon Online Judge 2021.07.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 PS/Baekjoon Online Judge 2021.07.23
[백준 5622] 다이얼 [C] 풀이 각 숫자의 시작 문자를 문자열로 구성하고, 문자열의 아스키코드값을 비교해 늘어난 index만큼 대기시간을 계산했다. 소스코드 #include int main(){ char num[16]; int result = 0; scanf("%s", num); for (int i = 0; i < num[i] != '\0'; i++) for (char ch = num[i], wait = 0; ; wait++){ if (ch < "@@ADGJMPTW["[wait]) break; result += 1; } printf("%d", result); } 출처 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.18
[백준 15596] 정수 N개의 합 [C] 풀이 다음처럼 반복문 내부의 변화식 란에서 연산을 하면 틀린다. 이에 대해 아직 아는 정보가 없어 추후 알게된다면 글을 하나 작성하겠다. long long sum(int *a, int n) { long long ans = 0; for (int i = 0; i < n; i++, ans += a[i]); return ans; } 소스코드 long long sum(int *a, int n) { long long ans = 0; for (int i = 0; i < n; i++) ans += a[i]; return ans; } 출처 15596번: 정수 N개의 합 C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Python 2, PyPy2, Go, C.. PS/Baekjoon Online Judge 2021.07.18