[SWEA] 8821/8741
2020. 11. 28. 02:10
알고리즘
#8821 : 적고 지우기 [코드] [코드설명] ① main 0과 9의 개수를 저장하기 위해 num_list 배열, 문자열을 받기 위해 str 배열을 선언했다. num_list 배열은 숫자의 개수를 저장해야 하기 때문에 값을 0으로 바꿨다. str[i]의 값을 c에 하나씩 받고, 문자를 숫자로 바꾸기 위해 c의 값에서 48을 뺐다. 그리고 조건 연산자를 사용해서 num_list[c]의 값이 0일 경우 1을 1일 경우 0을 반환하도록 하고, 그 값을 num_list[c]에 저장했다. while문이 끝나면 num_list의 합을 sum에 저장하고, t와 sum을 출력하도록 했다. [실행결과] #8741 : 두문자어 [코드] [코드설명] ① main scanf는 공백을 받아들이지 않기 때문에 gets함수로 문..
[SWEA] 8888/8840
2020. 11. 20. 02:15
알고리즘
#8888 : 시험 [코드] [코드설명] ① main 문제의 배점, 맞힌 문제의 개수를 표현하기 위해 point와 num배열을 만들었다. score배열은 N명의 점수를 저장하기 위해, test는 N명의 테스트 결과를 저장하기 위해 만들었다. N, T, P의 값을 입력 받았고, 나중에 getchar()를 쓸 일이 있기 때문에 getchar()를 써서 버퍼를 비웠다. memset을 사용해서 point와 num배열을 모두 0으로 채웠다. 그리고 test는 2차원 배열로 나타내야 하는데 2차원 배열을 사용하니 Stack Overflow가 발생해서 대신 이중 포인터를 사용했다. 24번째 줄의 for문 안에서 i의 값이 증가할 때마다 test[i]에 메모리를 할당해서 2차원 배열을 표현했고, 안쪽 for문에서 ge..
[SWEA] 10912/9229
2020. 11. 11. 14:11
알고리즘
#10912 : 외로운 문자 [코드] [코드설명] ① main 테스트케이스를 TC에 받고, TC만큼 실행을 반복한다. scanf를 사용한 후 버퍼를 비우기 위해 getchar()를 사용했다. 소문자 개수를 세기 위해 만든 alpha 배열의 값을 모두 0으로 바꾼다. getchar()로 입력한 문자를 한 개씩 가져와 c에 저장한 후 alpha[c-'a']의 값을 1증가시켜서 소문자의 개수를 센다. count 변수를 0으로 만들어 준 후 alpha 배열의 값이 짝수이면 count를 1증가시키고, 홀수이면 i에 'a'를 더해서 현재 인덱에 해당하는 소문자 알파벳을 putchar()로 출력한다. for문이 끝나면 count가 26인지 확인해서 참이면 Good을 출력한다. [실행결과] #9229 : 한빈이와 Sp..
[SWEA] 10059/9700
2020. 11. 6. 00:56
알고리즘
#10059 : 유효기간 [코드] [코드설명] ① main 테스트케이스를 TC에 입력 받고, getchar()로 버퍼를 비운다(두 번째 for문에서 getchar가 '\n'을 입력 받지 않게 하기 위해). for문에서 유효기간 확인 코드를 TC만큼 반복한다. getchar()로 유효기간을 date[i]에 입력 받고, '0'을 빼줘서 해당 숫자로 만든다. for문이 끝나면 getchar()로 버퍼를 비운다(첫 번째 for문이 다음 반복으로 넘어갈 때 두 번째 for문에서 getchar()가 '\n'을 입력 받지 않게 하기 위해). ② expiration_date n에 date의 맨 앞 두 자리 수를 계산하여 대입한다. n이 1≤n≤12이면 if문을 실행하고, 그렇지 않으면 else문을 실행한다. if문에서..
[SWEA] 9317/10804
2020. 10. 31. 19:17
알고리즘
#9317 : 석찬이의 받아쓰기 [코드] [코드설명] ① main 테스트케이스를 TC에 받고, for문으로 TC만큼 실행을 반복한다. N과 입력해야 할 문자열, 입력하는 문자열을 각각 N, s1, s2에 받는다.테스트케이스와 받아쓰기에서 틀린 개수를 출력한다. ② wrong_count 받아쓰기에서 틀린 개수를 저장할 변수 count를 0으로 초기화한다. for문에서 i 가 0에서 n-1까지 증가하고, s1[i]와 s2[i]를 비교해서 둘이 다르면 count가 증가한다.for문이 끝나면 n-count를 반환한다. [실행결과] #10804 : 문자열의 거울상 [코드] [코드설명] ① main 테스트케이스를 TC에 받고, for문으로 TC만큼 실행을 반복한다. s 배열에 b, d, p, q로 이루어진 문자열을..
[SWEA] 10726/8931
2020. 10. 2. 22:08
알고리즘
#10726 : 이진수 표현 [코드] [코드설명] ① main 테스트케이스를 TC에 입력 받고, for문으로 TC만큼 실행을 반복한다. 정수 N, M을 변수 N, M에 담고 while문으로 N과 M이 1 ≤ N ≤ 30 , 0 ≤ M ≤ 108을 만족할 때까지 입력 받는다. N과 M을 입력 받으면 bitcheck함수로 인자를 전달하고, 결과를 테스트케이스 번호와 함께 출력한다. ② bitcheck main함수에서 N과 M을 전달받는다. 정수 M의 마지막 N개의 비트가 모두 1인지 검사하기 위해서 정수 M의 2진수 표현에서 마지막 N비트만큼을 추출했다. 마지막 N비트는 1, 나머지는 0으로 채워진 수 ~(~0
[SWEA] 9940/10032
2020. 9. 24. 23:43
알고리즘
#9940 : 순열1 [코드] [코드설명] ① main scanf_s로 N을 입력 받고, while문으로 N이 1이상 100,000이하인지 검사한다. 숫자 N의 순열인지 확인할 N개의 숫자열을 저장하기 위해 malloc함수로 numArr에 sizeof(int)*N만큼의 메모리를 동적할당한다. for문에서 i가 0부터 N전까지 증가하면서 numArr에 N개의 숫자를 입력 받고, while문에서 numArr_check함수로 N개의 숫자가 0이상 N이하인지 확인한다. permutation_check함수로 numArr에 저장된 N개의 숫자가 N의 순열인지 확인하고, 그 결과를 YS에 반환한다. 결과 출력 후 free함수로 numArr 메모리를 해제한다. ② numArr_check 포인터 변수 numArr와 정수..
C정리 3주차
2020. 7. 11. 17:56
알고리즘
1. 논리식 참 또는 거짓 중 하나의 값을 가지는 식이다. 참과 거짓을 정수로 표현하면 참은 1, 거짓은 0이다. 2. 연산자 2.1 관계 연산자 ① A > B ② A = B ④ A 관계 연산자 > 동치 연산자* 논리 연산자는 0이 아닌 값은 무조건 참으로 인식 3. 조건문 3.1 if ① if문 형태 : if(수식) 명령문; 수식이 참이면 명령문이 실행되고, 거짓이면 실행되지 않는다. 실행되는 명령문이 여러 개면 중괄호로 묶어준다. ex) if(수식){ 명령문1; 명령문2; } ② if-else문 형태 : if(수식){ 명령문1; 명령문2; } else 명령문3; if문의 조건식이 성립하지 않을 때 실행되는 구문이다. ③ else if문 형태 : if(수식){ 명령문1; ... } el..