본문 바로가기
프로그램/C언어 1000제

C언어 181제] 2022 동래고등학교 정보과학 문제해결 대회 A번 성택이의 은밀한 비밀번호

by 건티 2024. 11. 13.
728x90

출처 : 반크_세계유산 경복궁

 

문제]

부산사이버대학교 학생 성택이는 엄마의 의뢰를 받아 주어진 문자열이 현관문 비밀번호에 사용 가능한지 알아내야 한다. 성택이는 공부해야 하므로 우리가 도와주자!

사용할 수 있는 비밀번호의 규칙은 다음과 같다.

비밀번호는 6자리 이상 9자리 이하여야 한다.
예를 들어, 123124는 올바른 비밀번호이고, 1202727161은 잘못된 비밀번호이다. 문자열이 주어졌을 때 현관문 비밀번호로 사용할 수 있는지 판단하자.

입력
첫째 줄에 문자열의 총개수 N이 주어진다.

둘째 줄부터 N개의 줄에 걸쳐 숫자, 영어 대소문자로만 구성된 문자열이 주어진다.

출력
줄마다 사용할 수 있는 비밀번호면 yes, 그렇지 않으면 no를 출력한다.

제한
● 1<= N <= 1,000 
● 문자열의 길이는 1자리 이상 20자리 이하이다.

예제 입력 1 
3
1245125
asdij
120318739721

예제 출력 1 
yes
no
no


출처 : 백준_25372번

 

참고풀이]

#include <stdio.h>
#include <string.h> //strlen():문자열의 문자의 개수 구하는 함수

int main()
{
   int i,j,k;//반복 또는 인덱스 변수 
   char Str[50]={'\0'};
   //체크할 문자열의 개수를 입력받는다.
   int N;

   scanf("%d%*c",&N);//%*c:EnterKey

   //체크할 개수만큼 반복하면서  비밀번호 요건 맞는지 체크한다.
   if(N>=1 && N<=1000) 
   {
      for(i=1; i<=N;i++)
      {
         scanf("%s%*c",Str);
         if(strlen(Str)>=1 && strlen(Str)<=20)
         {
            //숫자 또는 영어 대소문자만 비밀번호로 구성
            for(k=1,j=0;j<strlen(Str);j++) 
            {
               if(Str[j]>='A' && Str[j]<='Z');
               else if(Str[j]>='a' && Str[j]<='z');
               else if(Str[j]>='0' && Str[j]<='9');
               else
               {
                  k=0; break;
               }
            }

            if(k && (strlen(Str)>=6 && strlen(Str)<=9))
               printf("yes\n");
            else
               printf("no\n");
         }
         else
            return 0;
      }
   }

   return 0;
}

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 겨울

 

 

반응형

댓글