Skip to content

Instantly share code, notes, and snippets.

@nattybear
Created June 5, 2017 15:34
Show Gist options
  • Save nattybear/8ada175b8f6332b92f2e57dd8ec938ea to your computer and use it in GitHub Desktop.
Save nattybear/8ada175b8f6332b92f2e57dd8ec938ea to your computer and use it in GitHub Desktop.
정보처리 알고리즘 문제를 C언어로 구현
#include <stdio.h>
int main() {
// 2진수가 저장될 배열 A를 선언한다.
int A[10] = {};
int B;
// 2진수로 변환할 10진수를 입력 받는다.
scanf("%d", &B);
int BB = B;
// C는 1씩 누적되며 증가하는 변수이므로 0으로 초기화한다.
int C = 0;
int MOK;
do {
// 배열의 위치를 계산하기 위해 C를 1씩 증가시킨다.
C = C + 1;
// 10진수를 2로 나눈 몫을 MOK에 저장한다.
MOK = B / 2;
// 10진수를 2로 나눈 나머지를 NMG에 저장한다.
int NMG = B % 2;
// 나머지를 배열에 저장한다. 배열의 뒤쪽에서부터 차례대로
// 저장되도록 처리한다.
A[10 - C] = NMG;
// 몫인 MOK를 다시 2로 나누기 위해 MOK를 저장한다.
B = MOK;
} while (MOK != 0);
// 입력 받은 10진수 BB를 출력한다.
printf("%d\n", BB);
// 2진수가 들어 있는 첫 번째 위치를 계산한다.
int K = 10 - C;
for (int i=0; i<10; i++)
printf("%d", A[i]);
return 0;
}
@nattybear
Copy link
Author

nattybear commented Jun 5, 2017

배열의 시작을 0부터 세기 VS 1부터 세기

  • 배열의 시작을 0부터 시작하는지 1부터 시작하는지 잘 봐야 해
  • 이 문제에서는 배열의 시작을 1부터 시작하기 때문에 K = 11 - C라고 나온거야
  • C언어는 배열의 시작이 0부터야

C언어의 배열을 알면 알고리즘 문제가 쉽다

  • 알고리즘 문제는 대부분 C언어를 기반으로 제작된 듯해
  • 지금처럼 배열에 대한 개념을 이용한 것이 그 예이지
  • 정보처리 시험을 보기 전에 C언어 배열에 대해서 공부하면 도움이 될거야!

1바이트? 8비트?

  • 이 문제를 해결하는데 갑자기 1바이트와 8비트는 왜 나온거야?
  • 아마도 알고스팟에서 ENDIAN 문제와 이 문제가 비슷하다고 느껴서 이 문제와 ENDIAN 문제를 혼동한 것 같아
  • 이 문제는 1바이트, 8비트 등 실제 데이터의 크기와는 아무 관련이 없어

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment