새소식

반응형
알고리즘

[C++] 소프티어 Softeer 21년 재직자 대회 예선 - 전광판

  • -
728x90
반응형

귀엽

https://softeer.ai/practice/info.do?idx=1&eid=624 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

난이도 level 2인데..

레벨투 중 정답률 젤 높은 문제였는데 ...

 

나는 자꾸 테스트 케이스는 다 맞는데 제출만 하면 나머지 테스트케이스에서 틀렸다 ...

와 이럴땐 진짜 슬프고 막막한 기분이라 힘들엇다

 

무튼 ..

 

첨에 구현 어케할까 고민하다가 문제 풀이 방향성은 초반에 금방 찾았는데 .... 구현만 겁나 오래걸렸다 ..  정말 슬프고 오기가 생기고 .. 어쩌구 ..

 

방향성 끄적이다가 바로 비트연산 떠올라서 와 나 천잰가했는데 아닌걸로 ㅋㅎ...

 

심지어 코드도 솔직히 안깔끔함 .........

클린코드 ..... .. .. ..

한다면 훨씬 절반으로 코드 줄일수있을거같은데 ...

곧 도서관 닫을 시간이라 전공쉅 공부를 하러가겠다 ...

하핫 내 계획은 오늘 시간 절반은 전공공부 절반은 코테였느데 ㅎ

 

 

ㅎㅎ 화이팅... 힝

 

#include<iostream>


using namespace std;

int T,A,B, an,a,b,j;
int light[10]={0b1110111, 0b0010001, 0b0111110, 0b0111011, 0b1011001, 0b1101011, 0b1101111, 0b1110001,0b1111111, 0b1111011};
//솔직히 2진수도 일케 배열로 2진수 표현하는것보다 더 나은방법이 있을수도?
//근데 난 풀이하면서 2진수로 이미 다 파악해놔서 괜히 10진수 변환하는게 더 귀찮았음..

int count[5];
int main(int argc, char** argv)
{
	cin>>T;
	for(int i=0;i<T;i++){
		for(int a=0;a<5;a++)
			count[a]=0; //필요 없을듯
		an=0;
		cin>>A>>B;
		for(j=0;j<5;j++){
			a=A%10;
			b=B%10;
			count[j]=light[a]^light[b];
	
			A/=10;
			B/=10;
			if(A==0||B==0){
				j++;
				break;
			}
		}
		if(A!=0){	// A가 B보다 긴 숫자일때
			for(;A!=0&&j<5;j++){
				a=A%10;
				count[j]=light[a]^0;
				A/=10;
				if(A==0)break;
			}

		}else if(B!=0){	// B가 A보다 긴 숫자일때
			for(;B!=0&&j<5;j++){
				b=B%10;
				count[j]=light[b]^0;
				B/=10;
				if(B==0)break;
			}	
		}
		for(j=0;j<5;j++){	
			for(int k=0;k<7;k++){
				if(count[j]&1==1)
					an++;
				count[j]=count[j]>>1;
			}
		}
		cout<<an<<endl;
	}
	return 0;
}

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.