백준 3052 나머지
1574 단어 알고리즘남의 코드 훔쳐보기c언어c언어
https://www.acmicpc.net/problem/3052
#include <stdio.h>
int main(void){
int nums=0, rest[42]={0, }, sum=0, i;
for(int c=0; c<10; c++){
scanf("%d",&nums);
for(i=0; i<42; i++){
if(nums%42==i){
rest[i]++;
break;
}
}
}
for(i=0; i<42; i++){
if(rest[i]>=1){
rest[i]=1;
sum++;
}
}
printf("%d",sum);
return 0;
}
나머지로 나온 서로 다른 값들을 배열에 담은 후 출력하는 부분에서 시간이 많이 걸렸다. 너무 어렵게 생각하다가 제일 간단한 방법으로 답을 냈는데, 코드가 너무 멋대가리가 없어서 다른 사람 코드를 찾아보았다.
int main()
{
int a, r[42]={0}, i, c=0;
for (i=0; i<10; i++) {
scanf("%d", &a);
r[a%42]++;
}
for (i=0; i<42; i++)
if (r[i])
c++;
printf("%d", c);
}
r[a%42]++; 부분이 굉장히 인상깊었다.
나는
for(i=0; i<42; i++){
if(nums%42==i){
rest[i]++;
break;
}
이렇게 짰는데 이걸 한방에 줄여버릴 방법은 생각치도 못했다. 굳이 반복문 한번 더 안써도 되고, 간단하고 직관적이다.
그리고 if (r[i])부분은 괄호안이 0만 아니면 충족하는 조건이기 때문에 나처럼 배열의 값을 1로 바꾸고 할 필요가 없었다.
요령을 정리하자면,
1. 배열에 연산식을 넣어도 된다.
2. 조건문에 비교문 대신에 0과 0이외의 값으로 참 거짓을 판별하는 방법도 좋다.
(참고 : https://www.acmicpc.net/source/16673187)
Author And Source
이 문제에 관하여(백준 3052 나머지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@astar5327/백준-3052-나머지저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)