관리 메뉴

도드넷

정보처리기능사 실기 알고리즘 유형#13 - 문자열 변환 알고리즘 본문

창고/정보처리기능사[완]

정보처리기능사 실기 알고리즘 유형#13 - 문자열 변환 알고리즘

도드! 2016. 4. 23. 13:59
반응형





정보처리기능사 실기 시험 알고리즘 유형 13번째 문자열 변환 알고리즘


Groove me AJ


정보처리기능사 실기 요점정리#13 - 문자열 변환 알고리즘


1. 문자열 변환 알고리즘의 유형, 공통점

값을 입력받고 이를 제시한 조건[EX::단위표시를 중간에 넣어라, 진법변환을 해라]에 따라서

변형, 변환해서 자릿수별 수를 어떤 배열을 통해서 표기하게 한다.


2. 입력받은 자연수를 배열을 통해 표현하기


A(10) = {0,1,2,3,4,5,6,7,8,9}

STR(i) 임시 저장배열

i = 0

자연수 M을 입력받음


Point 1

i = i + 1 // 순서대로 나오게하려면 역순으로 표시해야하므로 카운트가 필요함.

TMP = M % 10 // 이걸통해서 맨뒤에 있는 수를 알아냄.

M = INT(M / 10) // 맨뒷수 알아낸후 해당수를 지우는 역할을 해냄.

STR(i) = A(TMP+1) // 저장순서와 반대로 역순으로 출력해야 하므로 임시 배열에 저장해야 함.

M = 0 이면 탈출 아니면 Point 1로 가서 계속진행


* 참고로 2 % 10 은 2가 됨.

* 참고로 2 / 10 은 0이 됨.


반복문 i, 1, -1 // 맨나중에 저장한 수부터 출력되므로 역순으로 표시되서 입력받은 자연수값을 출력하게됨.

출력 :: STR(i)


3. 입력받은 자연수를 진법변환해서 배열을 통해 표현하기 

10진수 -> N진수하는 컨밴셔널한 방법은 해당 N으로 대상 D를 계속 나누며 나머지를 구해서 역순으로 배치하는건데... 역순배치가 싫었는지 좀 다른방법을 쓰더군? (빌어쳐먹을)


A(16) = (0,1,2,3,4,5,6,7,8,9,A,B,C,D,F)

원하는 진법 N을 입력받는다.

원하는 대상 자연수 D을 입력받는다.

기묘한변수 K = 1 설정

임시저장소 Q = 0


K > D 이 될때까지 K = K * N 을 해줌. //이 과정을 통해 해당진수로 변환시 몇자리 수 인지 알수있음. 만약 10을 2진수 변환이라고 하면 2^4 까지 가는데 이는 4자리짜리 이진수가 될거라는 암시. 


Point 1

K > 1 이면 K/N 해줌

Q = INT(D / K)  

출력 :: A(Q+1) // 나머지가 아니라 이런식으로 증가된후 나눠진 몫을 이용하면 순차표기도 가능.

D = D - Q*K // 나누는 수 * 몫해서 빼는거랑 비슷한 과정인듯?

K = 1 이면 종료 아니면 Point 1로 가서 반복







반응형
Comments