백준 문제풀이

[백준] 3052번 문제 풀이

Dodledd 2024. 1. 28. 17:41

*모든 풀이는 현재 배운 것만 사용하여 풀이하므로 다른 분의 더 좋은 풀이가 많을 수 있습니다.

 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		boolean[]arr = new boolean[42]; //입력 받은 수를 42로 나눴을 때 나올 수 있는 수 (0~41) 이니 그 만큼 생성
		int in =0;
		int count=0;
		
		
		for(int i = 0; i<10; i++) {
			in = sc.nextInt(); //10개 입력받기
			arr[in%42]=true; // 입력값을 42로 나눴을 때 arr[나머지] 로 될테니 그 값을 트루로 바꿔줌. 그러면 자동으로 중복검사도 된다.
					
		}
		
		
		for(boolean Arr : arr) 
			if(Arr) //Arr이 true 라면 count++
				count++;
		
		System.out.println(count);
		
	}//end main
}//end Main

 

이것 저것 방법을 사용하며 1시간 가량 했지만 모두 실패하여 다른 분들 코드를 확인해보니 

boolean 배열을 사용해서 중복검사와 동시에 서로 다른 개수까지 확인하는거에 놀랐다.

 

IOException 나 BufferedReader 도 사용하시는 분들도 있지만 아직 배우지 않아서 배운 걸로만 알고리즘을 세워 풀어보았다.