알고리즘 공부/CodeUp 문제풀이
코드업 1640:악성 프로그램 삭제하기(C)
티들
2023. 10. 16. 22:48
문제 설명
현준이는 컴퓨터 인터넷이 느린 것을 알고, 제어판에 들어가 보니 여러 악성 프로그램이 설치 되어 있었다.
현준이 컴퓨터 인터넷이 빨라지도록 도와주기 위해 제어판에 있는 프로그램을 입력하면 악성 프로그램과, 컴퓨터의 위험도를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 프로그램이 입력될 갯수 정수 n이 입력된다.(1<=n<=100)
둘째 줄부터 n줄에 걸쳐 프로그램명인 문자열이 입력된다.(글자 수 : 50글자 이내)
출력
1. 악성 프로그램인지 아닌지 확인하는 방법 :
가. 프로그램명이 3글자 이하면 악성 프로그램이다.
나. 프로그램명에 tap이 들어가면 악성 프로그램이다.
다. 프로그램명에 xocure이 들어가면 악성 프로그램이다.
2. 컴퓨터의 위험도 출력 방법 :
가. 입력된 프로그램명 중에서 악성 프로그램 수가 0~3개이면 safe,
나. 악성 프로그램 수가 4~6개이면 warning,
다. 악성 프로그램 수가 7개 이상이면 danger을 출력하시오.
입력 예시
8
windows tap
hi
microsoft office 2013
xocure web player
xecure safe
goclean
alyac
von
출력 예시
windows tap
hi
xocure web player
von
warning
나의 코드
#include <stdio.h>
#include <string.h>
int main()
{
int n, i, count = 0, vi[100] = {0}; // 변수 선언
char str[100][51]; // 배열 선언
scanf("%d", &n); // 입력
getchar(); // \n 감지
for(i = 0; i < n; i++)
{
// 문자열 입력 받음(공백포함)
fgets(str[i], sizeof(str[i]), stdin);
// 문자열 끝 정의
str[i][strcspn(str[i], "\n")] = '\0';
if (strlen(str[i]) <= 3) { // 3이하라면
vi[i] = 1; // 위치 저장
count++; // 카운트 증가
}
else if (strstr(str[i], "tap")) {
// 특수 문자열이 있다면
vi[i] = 1;
count++;
}
else if (strstr(str[i], "xocure")) {
vi[i] = 1;
count++;
}
}
for(i = 0; i < n; i++) // 탐색한것만 출력
if (vi[i] == 1)
printf("%s\n", str[i]);
if (count < 4) // 카운트 수에 따라 출력
printf("safe");
else if (count < 7)
printf("warning");
else
printf("danger");
return 0;
}
문제 바로가기:https://codeup.kr/problem.php?id=1640&rid=0