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

[SWEA][D3][c++] 9839. 최고의 쌍 본문

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

[SWEA][D3][c++] 9839. 최고의 쌍

coooding 2020. 7. 14. 00:02

문제

9839. 최고의 쌍

 

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXGBGehqPAADFAXR&categoryId=AXGBGehqPAADFAXR&categoryType=CODE#none

 

SW Expert Academy

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

swexpertacademy.com

 

풀이 과정

 

입력값의 모든 경우의 수를 구하고 비교하면서 답을 구하면 쉽게 풀린다.

 

2개의 값을 곱한 값이 현재 최댓값보다 큰 경우에만 연속한 숫자인지 확인한다.

왜냐하면 연속하든 안하든 최댓값보다 작으면 소용이 없기 때문이다.

 

연속한 숫자를 확인하는데 쓴 방법은 10으로 나눈 나머지 값과 10으로 나눈 값을 10으로 나눈 나머지 값

숫자%10(숫자/10)%10을 비교하는 방식으로 확인하였다.

 

 

코드

 

#include<iostream>
#include<string>
using namespace std;
int main(int argc, char** argv)
{
	int test_case,T;
	scanf("%d",&T);
    int arr[1000];
    int result,n;
	for(test_case = 1; test_case <= T; ++test_case)
	{
        result=-1;
        scanf("%d",&n);
        for(int i=0; i<n; i++)
        	scanf("%d",&arr[i]);
        
        for(int i=0; i<n-1; i++){
        	for(int j=i+1; j<n; j++){
                int temp=arr[i]*arr[j];
                
                //result 값이 이미 temp보다 크다면 할 필요가 없음
                if(temp > result){
                    bool check=true;
                    int ttemp=temp;

                    while(ttemp/10>0){
                        if(ttemp%10-1!=(ttemp/10)%10){
                        	check=false;
                            break;
                        }
                        ttemp/=10;
                    }
                    if(check)
                        result=temp;
                }
            }
        }
        
        printf("#%d %d\n",test_case,result);
	}
	return 0;
}

 

 

Comments