도드넷
정보처리기능사 실기 알고리즘 유형#13 - 문자열 변환 알고리즘 본문
정보처리기능사 실기 시험 알고리즘 유형 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로 가서 반복
'창고 > 정보처리기능사[완]' 카테고리의 다른 글
정보처리 기능사 실기 유형#14 - 십의 자리 짝수 (0) | 2016.04.25 |
---|---|
흠...정보처리기능사 실기접수 실기시험 접수일정에 대해서. (0) | 2016.04.25 |
정보처리기능사 실기 알고리즘 유형#12 - 정렬병합 알고리즘 (0) | 2016.04.23 |
정보처리기능사 실기 알고리즘 유형#11 - 배열 채우기 (0) | 2016.04.22 |
정보처리기능사 실기 알고리즘 유형#10 - 항공기 운항 알고리즘 (0) | 2016.04.21 |