아직은 정체성이 없는 블로그

[SWEA][D3][c++] 10059. 유효기간 본문

알고리즘 역량테스트 문제/SWEA

[SWEA][D3][c++] 10059. 유효기간

coooding 2020. 7. 13. 00:39

문제

10059. 유효기간

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

풀이과정

1.입력값을 string 또는 char 배열로 입력을 받습니다.

2.앞의 문자열 2개와 뒤의 문자열 2개를 int형으로 변경한 뒤 조건에 맞는지 안맞는지 확인을 하여 결과를 출력합니다.

 

저는 처음 문제를 풀때 bool값과 if else를 통해서 결과 값을 출력하여 답이 나왔지만 좀더 간단하게 출력하고 싶어서 답을 string 배열을 통해 저장한뒤 bool 값 대신 int로 구분하여 출력해 보았습니다.

아래에 2개의 코드 모두 첨부하겠습니다.

 

코드

1.If else, bool 사용

#include<iostream>
#include<string>
using namespace std;

int main(int argc, char** argv)
{
	int test_case;
	int T;
	cin>>T;
	for(test_case = 1; test_case <= T; ++test_case)
	{
        string s;
        string result="";
        cin >> s;
        bool f=false ,b=false;
       
        int frontNum=10*(s[0]-'0')+s[1]-'0';
       	int backNum=10*(s[2]-'0')+s[3]-'0';
       
        if(frontNum<13&&frontNum>0)f=true;
        if(backNum<13&&backNum>0)b=true;
       
        if(f&&b) result="AMBIGUOUS";
        else if(f) result="MMYY";
        else if(b) result="YYMM";
        else result="NA";
       
        cout<<"#"<<test_case<<" "<<result<<"\n";
  
	}
	return 0;
}

 

 

2. int 사용

#include<cstdio>
#include<string>
using namespace std;

int main(int argc, char** argv)
{
	int test_case;
    string result[]={"NA","MMYY","YYMM","AMBIGUOUS"};
	int T;
	scanf("%d",&T);
	for(test_case = 1; test_case <= T; ++test_case)
	{
        char c[4];
        int resultNum=0;
        scanf("%s",c);
        
        int frontNum=10*(c[0]-'0')+c[1]-'0'; //앞 두자리
       	int backNum=10*(c[2]-'0')+c[3]-'0'; //뒤 두자리
       
        if(frontNum<13&&frontNum>0) resultNum+=1;
        if(backNum<13&&backNum>0) resultNum+=2;
       
        printf("#%d %s\n",test_case,result[resultNum].c_str());
  
	}
	return 0;

 

 

Comments