사칙연산 98

[백준 11720] 숫자의 합 [C]

풀이 문자열을 입력받고, 문자 '0'~'9'에 48을 뺀 아스키 코드 값이 숫자 0 ~ 9와 같다는 점을 이용해 해결하면 된다. 소스코드 #include int main(){ int N, sum = 0; char str[101]; scanf("%d %s", &N, str); for (int i = 0; i < N; i++) sum += str[i] - 48; printf("%d", sum); } 출처 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net

[백준 3052] 나머지 [C]

풀이 입력받은 값을 42로 나누었을 때의 나머지를 저장해두고 비교해서 서로 다른 수가 몇 개인지 찾아내는 문제이다. 최선의 경우에는 1개이지만, 최악의 경우에는 42개가 나올 수 있다. 수를 입력받고 배열의 마지막 인덱스까지 탐색 했는데 동일한 수가 없다면, 새로 등록을 해주는 형식이다. 소스코드 #include int main(){ int arr[42], num, idx = 1; for (int i = 0; i < 10; i++){ scanf("%d", &num); num %= 42; if (!i) arr[0] = num; else for (int j = 0; j < idx; j++) if (arr[j] != num && j == idx - 1){ arr[j+1] = num; idx++; }else i..

[백준 2884] 알람 시계 [C]

풀이 M이 45 이상일 때, 입력된 시간에서 45분만 빼면된다. M이 45 미만일 때, H가 1~24 일때 H -= 1이고, H가 0일때는 23으로 변경되어야 한다. 입력된 M의 값에 상관없이 60을 더하고 45을 뺀 값을 60으로 나누었을 때 나머지를 사용하면 짧게 표현할 수 있다. 소스코드 #include int main() { int H, M; scanf("%d %d", &H, &M); if (M < 45) H = (H != 0 ? H-1 : 23); printf("%d %d", H, (M+15) % 60); } 출처 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모..