구현 156

[백준 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..

[백준 1110] 더하기 사이클 [C]

풀이 원래의 수로 돌아올 때까지 일의 자리에 10을 곱한 값과, 십의자리/일의자리를 쪼개서 더한 값을 10으로 나누었을 때의 나머지를 더하면 된다. result = ((N%10)*10) + (((N/10) + (N%10))%10); 소스코드 #include int main() { int N, circle = 0, result; scanf("%d", &N); int save_N = N; while (1) { result = ((N%10)*10) + (((N/10) + (N%10))%10); circle++; if (result == save_N) break; N = result; } printf("%d", circle); } 출처 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가..

[백준 15552] 빠른 A+B [C]

풀이 printf(), scanf()는 충분히 빠르므로 그냥 사용해도 된다. 소스코드 #include int main() { int N, A, B; scanf("%d", &N); while (N--) { scanf("%d %d", &A, &B); printf("%d\n", A + B); } } 출처 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net

[백준 2750] 수 정렬하기 [C]

풀이 처음에는 입력받은 숫자에 해당하는 배열을 1로 초기화한 후 출력해주는 방법으로 접근했으나, 시작부터 틀렸다. #include #define MAX 1001 int main(){ int N, num, arr[MAX] = {0, }; scanf("%d", &N); while (N--){ scanf("%d", &num); arr[num-1] = 1; } for (int i = 0; i < MAX; i++) if (arr[i]) printf("%d\n", i + 1); } 아마도, "수의 절대값이 1,000보다 작거나 같은 정수"라는게 양수가 아닌, 음수 또한 입력되는 것으로 추측되기 때문에 틀린 것 같다. Insertion Sort를 사용해 해결했다. 소스코드 #include int main() { in..

[백준 1259] 팰린드롬수 [C]

풀이 문자열의 길이를 알아내 문자열의 양끝을 비교하는 방식으로 문제를 해결할 수 있다. 무의미한 0이 주어지지 않으므로, num[0]의 값이 0이면 반복문을 빠져나온다. 소스코드 #include #include int main(){ char num[6]; while (scanf("%s", num) && num[0] != '0') { int len = strlen(num), palin = 1; for (int i = 0; i < len/2; i++) if (num[i] != num[len - 1 - i]){ palin = 0; break; } puts(palin ? "yes" : "no"); } } 출처 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 9999..