입력 코드
#include <stdio.h>
main() {
int i = 0, j, k;
int rem[10];
int input, result = 0;
for(i=0;i<10;i++){
scanf("%d", &input);
rem[i] = (input % 42);
}
for (j = 0; j < 10; j++) {
int count = 0;
for (k = j+1; k < 10; k++) {
if (rem[j] == rem[k])
count++;
}
if (count == 0)
result++;
}
printf("%d", result);
}
코드 설명
배열과 반복문, 조건문을 이용하는 문제
#include <stdio.h>
main() {
int i=0, j=0, k;
int arr[10], rem[10];
int count=0;
while(i<10){
scanf("%d", &arr[i]);
rem[j++] = arr[i++]%42;
}
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
if (rem[j] != rem[k])
count++;
}
}
printf("%d", count);
}
처음에는 42로 나눈 나머지를 배열에 넣고 다른지 일일이 다 비교했는데 이렇게 하면 중복으로 count되는 게 많아지는 것 같다.
#include <stdio.h>
main() {
int i = 0, j, k;
int rem[10];
int input, result = 0;
for(i=0;i<10;i++){
scanf("%d", &input);
rem[i] = (input % 42);
}
for (j = 0; j < 10; j++) {
int count = 0;
for (k = j+1; k < 10; k++) {
if (rem[j] == rem[k])
count++;
}
if (count == 0)
result++;
}
printf("%d", result);
}
찾아보니까 반대로 count =0으로 초기화해놓고 나머지가 같을 때에만 count를 증가시킨다. 그러면 count = 0일 때는 나머지가 같지 않다는 것이므로 그때 새로운 값(result값)을 증가시킨다.
마지막에 반복문 초기값 설정하는 거에서 헷갈렸다. j=0인 값이랑 j=1, j=2,,, 를 비교해야 하니까
2021/01/08 - [C] - #19. [백준_C언어] 2798 : 블랙잭
이 문제랑 비슷한 것 같기도 하다.
↓↓↓ 참고한 사이트
문제 출처
'C' 카테고리의 다른 글
#26. [백준_C언어] 4344 : 평균은 넘겠지 (0) | 2021.01.12 |
---|---|
#25. [백준_C언어] 1546 : 평균 (0) | 2021.01.12 |
#23. [백준_C언어] 2577 : 숫자의 개수 (0) | 2021.01.11 |
#22. [백준_C언어] 1110 : 더하기 사이클 (0) | 2021.01.09 |
#21. [백준_C언어] 11050 : 이항 계수 1 (0) | 2021.01.09 |