-
문제로 배우는 C언어 - 두자리 숫자 만들기C언어 2020. 2. 29. 18:24
n장의 카드로 만들 수 있는 두자리 숫자 모두 만들기
1부터 scanf로 입력받은 n까지의 숫자 카드를 가지고 만들 수 있는 모든 두자리 숫자를 출력하는 문제이다.
특정 수 이하의 두자리 숫자 만들기
+ 십의 자리수가 일의 자리수보다 항상 커야한다.
처음풀이(틀림) 선생님 하는 걸보니 출력부분이 살짝 달라서 조정해봤다. 문제풀이:
나는 그냥 십의자리 수인 i와 j가 서로 붙어서 출력되도록했는데 선생님은 i에 10을 곱해서 j와 더해서 출력했다.
그리고 나는 십의 자리먼저 for문 돌리게 했고, 입력받은 숫자인 c를 10으로 나눠서 그 미만으로 for문이 돌도록했다. (내 문제 풀이의 실수)
53을 입력받으면 i가 1~4까지 돌게되는것이다. (그러면 51이나 52, 53을 빼먹게 됨)
그리고 일의 자리 숫자인 j가 i보다 같거나 적게 돌도록했다. (다시 생각해보면 같을 필요가 없다. j가 i보다 무조건 적어야하기 때문에)
마지막에 출력은 if문을 거쳐서, i가 j보다 클경우에만 출력하도록 했다. (j가 i보다 하나 적게 돌게하면 이 if문을 쓸 필요가 없음)
강의 문제풀이:
강의에서는 i를 9번 돌도록 했고 j는 i보다 한 수 적게 돌도록 했다. 그리고 입력받은 수보다 적은지 if문으로 확인한 다음에 출력했다.
(만들어진 수 중에 c보다 큰 수를 마지막에 걸러내고 있다.)
만약에 j+(i*10)이 c보다 크면 break 하도록해서 쓸데없이 많이 도는 걸 방지하고 있다.
다시 풀었음↴
다 만들어 놓고 걸러내는 것보다 적게 만들어내고 적게 거르는게 좋을 것 같아서 이렇게 짰다.
'C언어' 카테고리의 다른 글
문제로 배우는 C언어 - 배열문제 (0) 2020.03.01 문제로 배우는 C언어 - 배열, 1차원배열 (0) 2020.02.29 문제로 배우는 C언어 - 삼각형그리기(2), 삼각형그리기(3), 주사위의 합, 두자리 숫자만들기 (0) 2020.02.28 문제로 배우는 C언어 - 남는 사과의 개수 구하기, 정사각형그리기(중첩for문) (0) 2020.02.28 문제로 배우는 C언어 - 최소값 구하기, 홀수의 합 구하기, 동물의 수 구하기, 10부제 (0) 2020.02.27