본문 바로가기

Coding Tests

(78)
코드업 1031번(8진수로 출력해보기) 10진수를 입력받아 8진수(octal)로 출력해보는 문제이다. #include int main(void) { int A; scanf("%d", &A); printf("%o",A); return 0; } 다음과 같이 %o를 사용하여 10진수를 8진수로 출력하여 줄 수 있다. 입력: 10 ---- 출력:12
코드업 1030번(long long int) 정수 1개를 입력받아 그대로 출력해보자. 단, 입력되는 정수의 범위는 -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807이다. #include int main(void) { long long int A; scanf("%lld", &A); printf("%lld",A); return 0; } 이 정도의 값의 범위가 큰 수를 입출력할 때에는 long long int를 사용해 주어야 한다 long long int는 %lld를 사용해 입력을 받고 출력을 해준다
코드업 1029번(실수형의 값의 표현 범위) 실수 1개를 입력받아 그대로 출력해보는 문제이다. (단, 입력되는 실수의 범위는 +- 1.7x10의-308승 ~ +- 1.7x10의 308승이다.) 추가적으로 입력된 실수를 소수점 이하 11자리까지 반올림하여 출력한다. 일반적으로 실수형인 float형은 크기는 4바이트이고, 값의 표현 범위는 (+- 3.4*10-37승 ~ +- 3.4*10의 38승 이하)이다. 그에 반해 double형은 +- 1.7x10의-308승 ~ +- 1.7x10의 308승 정도의 값을 표현해 줄 수 있다고 한다. float형의 소수점 이하 정밀도는 6자리 이고, double형의 소수점 이하 정밀도는 15자리이다. long double의 소수점이하 정밀도는 18자리이다 #include int main(void) { double A;..
코드업 1028번(unsigned int 사용해보기) 정수 1개를 입력받아 그대로 출력해보자. (단, 입력되는 정수의 범위는 0 ~ 4,294,967,295이다.) 값의 표현 범위가 int형이 표현할 수 있는 범위를 넘어섰기 때문에, long long int나 unsigned int(0 이상~ 40억 이하 정도는 표현 가능)를 사용하여 풀어준다. #include int main(void) { long long int A; scanf("%lld", &A); printf("%lld", A); return 0; } unsigned int는 % u의 서식 문자를 사용한다. #include int main(void) { unsigned int A; scanf("%u", &A); printf("%u", A); return 0; } unsigned 형들의 값의 표현 범..
코드업 1025번(%1d의 사용) 다섯 자리의 정수 1개를 입력받아 각 자리별로 나누어 출력하는 문제 #include int main(void) { int a, b, c, d, e; scanf_s("%1d%1d%1d%1d%1d", &a, &b, & c, &d, &e); printf("[%d0000]\n", a); printf("[%d000]\n", b); printf("[%d00]\n", c); printf("[%d0]\n", d); printf("[%d]\n", e); return 0; } %1d 라고 넣어주면 어떠한 긴문장이 있을때 하나씩 끊어서 입력받을 수있다.
코드업 1045번(나눈값??) 정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보는 문제이다. (단 0
코드업 1044번(큰수를 입력받을때) 정수를 1개 입력받아 1만큼 더해 출력해보는 문제이다. (단, -2147483648 ~ +2147483647의 범위로 입력된다.) 나의 첫번째 오답 풀이이다. 입력값이 2147483647이고, 여기서 1을 더하여 출력을 하면 끝자리만이 8로 바뀌는 것이 아니라 앞에 -가 붙고 끝자리가 8로 바뀌는 것을 알 수 있다. 그 이유는 int형의 값의 표현 범위를 넘어서 거꾸로 한 바퀴를 돌아왔기 때문에 이와 같은 출력 값이 나오게 되는 것이다. #include int main(void) { int A; scanf_s("%d", &A); printf("%d", ++A); return 0; } 나의 두 번째 풀이인데, 이 문제에서의 입력값은 대략 21억의 엄청 큰 수이다. 이런 큰 수의 경우 int형, 즉 일반적인..
코드업 1046번(자료형의 변환) 정수 3개를 입력받아 합과 평균을 출력해보는 문제이다. 단, -2147483648 ~ +2147483647 -2147483648 ~ +2147483647는 값의 표현 범위를 나타내는데, int형(4바이트) 이나 long형(4바이트)이 이에 해당한다. int형 정수를 입력받으라는 소리인 것 같은데, 굳이?라는 생각이 들기도 하지만 정수 자료형 중 자주 쓰는 char형(1바이트, -128 이상 +127 이하)도 있으니 그런 것이라 생각한다. 첫 번째 나의 풀이인데, 단순한 문제에 비해 너무 복잡하게 푼듯한 느낌이든다. 그리고 avr을 구하는 과정에서 3으로 나누었는데, 잘못된 풀이라는 결과가 나왔다. 이는 3.0으로 나누어 주면 해결이 되는데, avr과 arr [ ]의 배열 요소들의 자료형이 일치하지 않아 ..