알고리즘 부분에서 10진수를 임의의 진법으로 변환하는 알고리즘 문제에 대해 궁금한게 있어서 질문드립니다.
먼저 해당 문제의 3번 답인 TEMP mod B에서 int( ) 를 씌어야 하지 않나요? 만약 2진으로 바꿀경우 3을 나누면 1.5가 나오고 10을 8진으로 바꾸면 몫이 1.xx가 나오고 16진법으로 바꿀경우에는 ABCDEF 또한 없는데 이부분이 이해가 잘 안되네요
두번째는 i가 4까지 늘어난 디버깅 표가 이해가 안됩니다. i는 12 6 3 에서 맨 마지막에 항상 1씩 늘어나는 위치에있는데 3번째인 1이 됨과 동시에 조건 판단문으로 올라가면 1보다 크냐의 조건판단문에 no가 아닌 yes로 가서 num[ 0 1 2 3 ] = 0 0 1 1 로 마무리되어 4번 답안을 i라고 생각했는데 i-1이 답이더라고요
안녕하세요 길벗수험서 운영팀입니다.
[1]
나머지를 구하는 연산 MOD에 대해 오해하고 계신 것이 있는 것 같습니다.
MOD는 소수점을 반환하지 않습니다.
3을 2로 나눴을 때 몫은 1 나머지가 1이 됩니다. 이것을 식으로 표현하게 되면 다음과 같이 됩니다.
3 ÷ 2 = 1 나머지 1 --- 몫은 1, 나머지는 1
(몫 * 나눈 수) + 나머지 = 본래 수
(1 * 2) + 1 = 3
[2]
(편의상 소문자를 이용하겠습니다.)
a는 12, i는 0인 상태로 반복문(a<1조건문부터 i=i+1까지)으로 진입합니다.
1회 : a는 6이 되고 i는 1이 됩니다. a<1 거짓
2회 : a는 3이 되고 i는 2가 됩니다. a<1 거짓
3회 : a는 1이 되고 i는 3이 됩니다. a<1 거짓
4회 : a는 0이 되고 i는 4가 됩니다. a<1 참 -> num[i] = a 로 넘어갑니다.
위의 진행대로라면 i는 4가 됩니다.
순서도에서 마지막 값을 계산할 때 주의하시기 바랍니다. 마지막에 a가 0이됨과 동시에 i는 4가 되며, 조건문을 만나 빠져나가게 됩니다.
대부분의 수험생들이 반복변수의 마지막값을 구하는 것에 혼동하는 경우가 있는데, 이 것을 해결하는 방법은 순서도의 각 기호를 침착하게 하나씩 진행해가며 디버깅 해보는 방법 이외에는 없습니다.
행복한 하루되세요 :)
-
관리자2019-07-09 10:55:08
안녕하세요 길벗수험서 운영팀입니다.
[1]
나머지를 구하는 연산 MOD에 대해 오해하고 계신 것이 있는 것 같습니다.
MOD는 소수점을 반환하지 않습니다.
3을 2로 나눴을 때 몫은 1 나머지가 1이 됩니다. 이것을 식으로 표현하게 되면 다음과 같이 됩니다.
3 ÷ 2 = 1 나머지 1 --- 몫은 1, 나머지는 1
(몫 * 나눈 수) + 나머지 = 본래 수
(1 * 2) + 1 = 3
[2]
(편의상 소문자를 이용하겠습니다.)
a는 12, i는 0인 상태로 반복문(a<1조건문부터 i=i+1까지)으로 진입합니다.
1회 : a는 6이 되고 i는 1이 됩니다. a<1 거짓
2회 : a는 3이 되고 i는 2가 됩니다. a<1 거짓
3회 : a는 1이 되고 i는 3이 됩니다. a<1 거짓
4회 : a는 0이 되고 i는 4가 됩니다. a<1 참 -> num[i] = a 로 넘어갑니다.
위의 진행대로라면 i는 4가 됩니다.
순서도에서 마지막 값을 계산할 때 주의하시기 바랍니다. 마지막에 a가 0이됨과 동시에 i는 4가 되며, 조건문을 만나 빠져나가게 됩니다.
대부분의 수험생들이 반복변수의 마지막값을 구하는 것에 혼동하는 경우가 있는데, 이 것을 해결하는 방법은 순서도의 각 기호를 침착하게 하나씩 진행해가며 디버깅 해보는 방법 이외에는 없습니다.
행복한 하루되세요 :)