본문으로 바로가기

[알고스팟]ENDIAN (1)

category 알고리즘/알고스팟 2017. 4. 26. 23:46
728x90
반응형

안녕하세요. letitkang입니다.


오늘 새로운 게시판을 만들었습니다.


바로바로 그 머리아프다는 알고리즘!


알고리즘 게시판입니다. 알고리즘 정말정말 중요합니다.


 

 

 



업무에서나 어느 방면에서라도 설계를 하고, 코딩을 할 때, 어떤 알고리즘을 쓰느냐에 따라서 성능이 천차만별입니다.


물론 요즘은 하드웨어가 워낙 좋아서 성능으로 골머리를 쓰는 경우는 많이 없는 것으로 보입니다.


참고로 전 알고리즘 공부는 대학교때 A를 받았지만,,, 자랑입니다 ㅋㅋ


그 때 이후로 공부한 적은 한번도 없습니다. 이제부터 한번 해보려구요!


잡설인 이것으로 하고, 알고리즘 첫 포스팅 시작하겠습니다.


알고리즘 공부를 어떻게 할까? 생각해보았습니다.


책을 보는 방법, 실전 문제를 푸는방법 등등


이 게시판에서 저는 실전 문제를 푸는 방법으로 포스팅을 이끌어가려고합니다.


알고리즘 문제가 있는 사이트는 여러곳 있지만, 그 중에 저는 알고스팟을 선정하였습니다.


왜냐? 제마음이죠~


지금부터 시작해봅시다. 들어갑니다!


오늘의 문제 "ENDIAN"


먼저 문제를 한번 봅시다.


 

 

 





오잉? 시작부터 영어네요! 문제가 영어입니다!


아 머리아파 ㅠㅠ 그렇지만 풀어보죠.


해석해봅시다. 천천히요.




-> 두 국가가 있는데 한국가는 리틀엔디안을 사용하고, 한 국가는 빅엔디안을 사용합니다. 엔디안에 관련된 문제로 보입니다.


즉 두 국가간의 데이터 교환에는 리틀엔디안을 빅엔디안으로, 빅엔디안을 리틀엔디안으로 바꾸는 과정이 필요합니다.


1에서 10000사이의 값을 입력 받고, 데이터 변환 과정을 거처서 unsigned int를 출력하는 프로그램을 만들어야됩니다.




이 문제를 풀기전에 엔디안에 대한 이해가 필요합니다.


엔디안이란 컴퓨터 메모리가 1차원 공간에 여러개의 연속된 대상을 배열하는 방법을 뜻합니다.


종류로는 보통 사용되는 큰 단위 앞에 나오는 빅엔디안, 작은 단위가 앞에 나오는 리틀 엔디안, 두 경우에 속하지 않는 미들엔디안이 있습니다.



위의 그림은 각각의 엔디안에 대한 예를 보여주는 것입니다. 그림을 한번 보면 어떤 것인지 파악할 수 있겠죠?


위의 3가지 방법 중 어느것이 좋다고 할 수는 없습니다. 쓰기 나름입니다.


보통인 빅엔디안, 리틀엔디안을 사용합니다.


다시 문제로 돌아가봅시다.


대충 설계를 해보겠습니다.


1. 정수를 입력 받습니다.(4바이트 = 32비트)


2. 10진수를 2진수로 변환시킵니다.


3. 빅엔디안이라면 리틀엔디안으로, 리틀엔디안이면 빅엔디안으로 바꿉니다.


4. 바뀐 값을 다시 unsigned 32비트 정수로 바꿉니다.


 

 



끝~


일단 설계는 이렇게만 해두었습니다.


다음 포스팅에서 제가 짠 소스 코드를 공개하겠습니다. 더불어 설명도 추가하겠습니다.


저의 코딩 실력이 처음 공개되네요!


읽어주셔서 감사합니다.

728x90
반응형

'알고리즘 > 알고스팟' 카테고리의 다른 글

[알고스팟]ENDIAN (2)  (0) 2017.05.10