이번에는 제목 그대로 겹치지 않는 3자리 수를 오름차순으로 차례로 출력해 보도록 하겠습니다.
이때 3자리 수 또한 오름차순으로 되어 있어야 합니다. 즉, 012는 되는데 132는 안 되는 겁니다.
012, 013, 014, 015, 016, 017, 018, 019, 023, 024, ..., 089, 123, ...., 789
위와 같이 출력될 것입니다.
그면 이번에는 while문으로 한 번 작성해 보죠.
첫째 자리의 최댓값은 7이고 둘째 자리의 최댓값은 8이고 셋째 자리의 최댓값은 9입니다.
각 자리의 최댓값을 이렇게 설정하면 되겠네요.
쉼표는 마지막에만 없으면 될 것 같으니 첫째 자리가 7이면 쉼표를 출력하면 안 되겠네요.
(789가 마지막 수이면서 첫째 자리가 7일 때의 수는 789밖에 없습니다. )
아래의 코드를 보시기에 앞서서 함수나 while문 그리고 write에 대해 아직은 잘 모르시는 분들은 아래의 링크들을 참고부탁드리겠습니다.
함수는 여기서...
https://hig0617.tistory.com/21
while문은 여기서...
https://hig0617.tistory.com/12
write는 여기서...
https://hig0617.tistory.com/47
모든 링크를 확인하시거나 혹은 c언어 함수와 while문에 아시는 분들은 아래 코드를 바로 보시죠.
#include <unistd.h>
void print_ijz(char i, char j, char z)
{
write(1, &i, 1);
write(1, &j, 1);
write(1, &z, 1);
if (i != '7')
{
write(1, ",", 1);
write(1, " ", 1);
}
}
void print_comb(void)
{
char i;
char j;
char z;
i = '0';
while (i <= '7')
{
j = i + 1;
while (j <= '8')
{
z = j + 1;
while (z <= '9')
{
print_ijz(i, j, z);
z++;
}
j++;
}
i++;
}
}
int main(void)
{
print_comb();
return 0;
}
print_comb는 알고리즘이 작성되어 있고, print_ijz는 출력을 담당해 주는 함수입니다.
print_comb먼저 설명 드리도록 하겠습니다.
첫째 자리를 i, 둘째 자리를 j, 셋째 자리를 z라고 설정을 하고 최댓값이 각각 7, 8, 9이므로 while문이 각각 7, 8, 9가 될 때까지 돌아야 하고 j와 z는 while문이 시작하기 전에 초기화를 해주어야 합니다. 초기화를 진행할 때에 무조건 앞의 값보다 1 커야 하기 때문에 j는 i + 1로 초기화를 진행하고 z는 j + 1로 초기화를 진행을 하였습니다.
print_ijz를 설명드리겠습니다.
출력을 담당해 줍니다. i, j, z를 출력을 해주고 i가 7이 아니면 ', '를 출력해 줍니다.
'Algorithm > Algorithm' 카테고리의 다른 글
문자열 대문자로 변환하기 (0) | 2023.10.22 |
---|---|
겹치지 않는 N자리 수를 오름차순으로 출력하기 (0) | 2023.10.18 |
숫자를 write함수를 사용해 출력하기 (2) | 2023.10.17 |
양수 음수 판독기 (0) | 2023.10.15 |
문자 연산하여 write 함수로 출력하기 (4) | 2023.10.14 |