codeup.kr 문제 풀이

정답 인증

1602 절대값 함수

#include <stdio.h>
double ABS(double input) {
if (input < 0) {
// 인풋값이 음수일 경우에, -1을 곱한 후, 리턴
return input * -1;
} else {
// 인풋값이 양수일 경우에, 리턴
return input;
}
}
int main() {
double input;
scanf("%lf", &input);
printf("%.10g", ABS(input)); // %g는 실수형을 출력할떄 불필요한 0을 출력하지 않음
return 0;
}

1610 서브 스트링

#include <stdio.h>
char *mysubstr(char *input, int start, int count) {
int i;
char substr[100] = {'\0',}; // 추출한 글자를 저장할 문자열 & 널로 초기화
for (i = 0; i < count; i++) {
substr[i] = input[start + i]; // substr에 한문자씩 대입
}
return substr; // 결과 리턴
}
int main() {
char str[100]; // 원본 문자열
int start, count;
scanf("%s %d %d", str, &start, &count);
printf("%s\n", mysubstr(str, start, count));
return 0;
}

1615 셀프 넘버 (Self-Number)

#include <stdio.h>
int daplus(int input) {
int result = input; // input 자신
for (; input != 0;) { // input이 0이 될때까지 반복
result += input % 10; // + 자릿수
input /= 10;
}
return result; // (input 자신 + 각 자리수)를 리턴
// 셀프넘버가 아닌 수들이다.
}
int main() {
int i, start, end, judge[10000] = { 0, }, result = 0;
scanf("%d %d", &start, &end);
for (i = start; i <= end; i++) {
judge[daplus(i)] = 1; // start~end까지의 셀프넘버가 아닌 수들을 체크
}
for (i = start; i <= end; i++) {
if (judge[i] != 1) {
result += i; // i가 셀프넘버이면 result에 계속 더해나감
}
}
printf("%d\n", result);
return 0;
}

1620 자릿수의 합

#include <stdio.h>
int sepa(int relict, int result) {
if (relict == 0) {
return result;
}
else {
result += relict % 10;
return sepa(relict / 10, result);
}
}
int main() {
int input, result = 0;
scanf("%d", &input);
while (input >= 10) { // 자릿수의 합이 한자리가 될때까지 반복
input = sepa(input, 0);
}
printf("%d", input);
return 0;
}

1920 (재귀함수) 2진수 변환

#include <stdio.h>
void printbinary(int input) {
if (input > 1) {
printbinary(input / 2);
}
printf("%d", input % 2);
}
int main() {
int input;
scanf("%d", &input);
printbinary(input);
return 0;
}

1928 (재귀함수) 우박수 (3n+1) (basic)

#include <stdio.h> 
void Collatz(int n) {
if (n == 1) { // n이 1이 되면 main함수로 돌아감
return;
}
else if (n%2 != 0) { // n이 홀수이므로, 3n+1
printf("%d\n", 3*n + 1);
return Collatz(3*n + 1);
}
else { // n이 짝수이므로, n/2
printf("%d\n", n / 2);
return Collatz(n / 2);
}
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", n);
Collatz(n);
return 0;
}

1953 (재귀함수) 삼각형 출력하기 1

#include <stdio.h>
int print(int n) {
if (n == 0) {
return 0;
}
printf("*");
return print(--n); // 가로값만큼 별을 출력함을 표현
}
int Triangle(int Width, int Height) {
if (Width > Height) { // 가로가 세로보다 커지면 메인함수로
return 0;
}
print(Width);
printf("\n");
return Triangle(++Width, Height);
}
int main() {
int Width = 1;
int Height;
scanf("%d", &Height);
Triangle(Width, Height);
return 0;
}

1904 (재귀함수) 두 수 사이의 홀수 출력하기

#include <stdio.h>
void holsoo(int a, int b) {
if (a % 2 != 0) {
printf("%d ", a++); // 홀수면 출력
}
if (a < b) { // 아직 마지막수까지 돌지 않았다면
return holsoo(++a, b);
}
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
holsoo(a, b);
return 0;
}
Total views

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×