Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 알고리즘
- 레퍼럴
- SWEA
- Java
- 11060
- 메타퀘스트3
- Meta Quest3
- 점프 점프
- 논블록
- 어싱크
- SOLID
- D3
- 10505
- 재밌게 할래요
- BOJ
- 백준
- 디자인패턴
- Design Pattern
- C++
- D2
- Initiative Q
- spring
- d4
- 리퍼럴
- 블록
- 삼성 SW 역량 테스트 기출 문제
- 프로그래머스
- 이니셔티브 q
- level2
- 자료구조
Archives
- Today
- Total
아직은 정체성이 없는 블로그
[SWEA][D3][c++] 9839. 최고의 쌍 본문
문제
9839. 최고의 쌍
문제 링크
풀이 과정
입력값의 모든 경우의 수를 구하고 비교하면서 답을 구하면 쉽게 풀린다.
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;
}
'알고리즘 역량테스트 문제 > SWEA' 카테고리의 다른 글
[SWEA][D3][c++] 9778. 카드 게임 (0) | 2020.07.17 |
---|---|
[SWEA][D3][c++] 10200. 구독자 전쟁 (0) | 2020.07.14 |
[SWEA][D3][c++] 9940. 순열1 (0) | 2020.07.13 |
[SWEA][D3][c++] 9997. 미니멀리즘 시계 (0) | 2020.07.13 |
[SWEA][D3][c++] 10032. 과자 분배 (0) | 2020.07.13 |
Comments