✏️ 문제풀이/백준
[백준/Java] 3052번 :: 나머지
bono-hye
2024. 4. 4. 21:52
1) Scanner & 배열 사용
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int[] array = new int[10];
int count = 0;
boolean flag;
// 배열에 입력 받은 수를 42로 나눈 나머지 저장
for(int i=0; i<10; i++)
array[i] = sc.nextInt() % 42;
for(int i = 0; i<array.length; i++)
{
flag = false;
for(int j=i+1; j<array.length; j++)
{
if(array[i] == array[j])
{
flag = true;
break;
}
}
if(flag == false)
count++;
}
System.out.println(count);
sc.close();
}
}
2) HashSet 사용
더 효율적인 코드가 있을 것 같아 검색해 본 결과, HashSet을 쓰는 방법도 있었다!!
HashSet은 중복되는 값을 허용하지 않으니 더 적합한 풀이 방법인 것 같다라는 생각이 들었음!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Main
{
public static void main(String[] args) throws NumberFormatException, IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<Integer> array = new HashSet<>();
for(int i=0; i<10; i++)
array.add(Integer.parseInt(br.readLine())%42);
System.out.println(array.size());
}
}
HashSet 사용한 코드가 시간이 단축된 것을 확인할 수 있다!
다른 방법으로 풀어보면서 결과 확인해보는거 재밌다 :D