✏️ 문제풀이/백준

[백준/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