문제 해결/CodeUp
[CodeUp] [C++] 1430번 기억력 테스트 2
WSLim_97
2024. 1. 20. 22:52
반응형
https://codeup.kr/problem.php?id=1430&rid=0
기억력 테스트 2
첫째줄에 N이 입력된다. (1 <= N <= 10,000,000) 둘째 줄에 N개의 숫자가 공백으로 구분되어 차례대로 입력된다. ( 데이터값의 범위 : 1 ~ 10,000,000) 셋째줄에 질문의 수 M이 입력된다. ( 1 <= M <= 100,000) 넷째
codeup.kr
코드
#include <iostream>
using namespace std;
int arr[10000001] = { 0 };
int main()
{
int n, m, input;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> input;
arr[input] = 1;
}
cin >> m;
for (int j = 0; j < m; j++)
{
cin >> input;
cout << arr[input] << " ";
}
return 0;
}
풀이
먼저 n개의 정수를 입력받아 저장한 뒤 m개의 정수를 입력받아 일치하는 정수가 있는지 확인하여 출력하는 문제이다.
처음 문제를 풀 때에는 중첩 for문을 활용하여 코드를 작성하였는데 시간 초과 오류가 발생하면서 오답 처리가 되었다.
하나하나 정수를 비교하며 풀어가려고 해서 그런지 시간 초과 오류가 발생한 것이다.
for문의 중첩을 최소화하기 위해서 입력받은 정수를 배열의 인덱스로 활용하여 그 값을 1로 변경해 따로 정수가 배열에 존재하는지 확인할 필요가 없어졌기에 시간 초과를 피할 수 있었다.
반응형