Solved / AC ratio: 35 (77.78%)
Fastest submission: zolac (5 min.)
Writer: Toivoa
A번으로 쉬운 문제를 내려다 생각한게 endian 변환 문제입니다. Being이 올린 뒷이야기에도 나오듯이 출제자는 1분이면 풀릴거라고 생각했었습니다. ㅠㅠ
간단히 byte 순서를 바꾸면 되는 문제이기 때문에 다음과 같이 풀 수 있습니다.
~~~ cpp
unsigned n, res = 0;
scanf("%u", &n);
for (int i = 0; i < 4; ++i)
{
res = res * 256 + n % 256;
n /= 256;
}
printf("%u\n", res);
만약 bit 연산을 이용한다면 for문을 다음과 같이 변경할 수 있습니다.
~~~ cpp
res = ((n & 0xFF000000) >> 24) + ((n & 0xFF0000) >> 8) + ((n & 0xFF00) << 8) + ((n & 0xFF) << 24);
덧 - java에서는 unsigned 자료형을 지원하지 않지만, long (64bit)을 이용해서 푸시면 문제 없이 풀 수 있습니다.
Toivoa
Solved / AC ratio: 35 (77.78%)
Fastest submission: zolac (5 min.)
Writer: Toivoa
A번으로 쉬운 문제를 내려다 생각한게 endian 변환 문제입니다. Being이 올린 뒷이야기에도 나오듯이 출제자는 1분이면 풀릴거라고 생각했었습니다. ㅠㅠ
간단히 byte 순서를 바꾸면 되는 문제이기 때문에 다음과 같이 풀 수 있습니다.
~~~ cpp
unsigned n, res = 0;
scanf("%u", &n);
for (int i = 0; i < 4; ++i)
{
res = res * 256 + n % 256;
n /= 256;
}
printf("%u\n", res);
덧 - java에서는 unsigned 자료형을 지원하지 않지만, long (64bit)을 이용해서 푸시면 문제 없이 풀 수 있습니다.
17년 전