반응형

도전2

사용자로부터 두 개의 숫자를 입력받아서 구구단을 출력하는 프로그램을 작성해 보자. 

예를들어서 사용자가 3과 5를 입력하면, 3단, 4단, 5단을 출력해야 한다. 또한 2와 4를 입력받으면 2단, 3단, 4단을 출력해야 한다. 

단 조건이 있다. 사용자는 두개의 숫자를 입력할 때에 입력 순서에 자유로워야 한다. 즉 3과 5를 입력하건, 5와 3을 입력하건 프로그램은 같은 결과를 출력해야 한다. 이 문제의 해결 방법은 상당히 다양하게 나타날 수 있다. 그러나 효율적인 구성은 존재하기 마련이다. 

 

라는 매우 거창한 문제입니다. 

 

알고리즘과 의사코드에 대해서 생각해보겠습니다. 

 

일단 입력값이 3, 5 든 5, 3이든 출력이 같아야 하므로, 변수를 큰값, 작은값 선언해서, 입력받은 숫자중 큰것을 큰값 변수에 

작은값을 작은값 변수에 넣어, 큰값, 작은값을 포함한 구구단을 출력하면 되겠습니다. 

 

 

의사코드 

 

숫자 a와 b를 입력받습니다. 

두 수의 크기를 확인하고, 큰값, 작은값을 구분합니다. 

작은값부터 시작하여 구구단을 출력합니다. 

큰값까지 출력하면 프로그램을 마칩니다. 

 

코드입니다. 

 

3번째 줄부터 13번째 줄까지는 정해진 단수의 구구단을 출력하는 gugudan 함수의 몸체입니다. 

gugudan 함수는 큰값과 작은값을 받아 작은값을 포함하여 큰값을 포함하는 값까지의 구구단을 출력하는 함수입니다. 

 

위 코드에서 주목해야 할 곳은 2군데 입니다. 

 

첫번째는 23번째 줄의 if, 33번째 줄의 else 구문입니다. 

앞서 설명했다시피, 입력받는 수의 유효성을 검사하기 위한 구문입니다. 

(앞서 도전1과는 다른방법으로 오류를 검사하였습니다. 방법별로 장단점이 있으니 편하실대로 사용하시면 되겠죠) 

 

두번째는 25번째줄, 26번째줄입니다. 

?앞의 조건을 검사하여, 참이면 첫번째 값을, 거짓이면 두번째 값을 반환합니다. 

25번째줄에서 (a>b) 가 조건이고, 참이면 max에 a가 들어가며, 거짓이면 max에 b가 들어갑니다 

26번째줄은 25번째줄의 결과와 반대가 되도록 해놓았습니다. 

참고로 28번째 줄은 디버깅을 위한 코드입니다.(없어도 아무 문제 없습니다.)

28번째 줄의 출력 결과를 보고, 25~26번째 줄이 우리의 의도대로 잘 동작했는지 확인할 수 있습니다. 

 

실행결과입니다. 

이상없이 잘 출력되는 것을 확인할 수 있습니다. 

 

이상입니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기