pullwall
Well done! 코딩
pullwall
전체 방문자
오늘
어제
  • 분류 전체보기 (151)
    • 개발환경 (2)
    • java study (21)
    • 백준 단계별 (51)
    • 알고리즘 (3)
    • AI (43)
    • 클라우드 (3)
      • Kubernetes in Google (3)
    • 논문 (5)
    • 리눅스 (1)
    • AWS (4)
    • 수학 (15)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • dataset
  • 백준 단계별
  • Java
  • 자바독학
  • LLM
  • Ai
  • Google
  • AWS
  • Kubernetes
  • 정렬
  • 선택정렬
  • 쿠버네티스
  • pytorch
  • 정렬알고리즘
  • 수학
  • 논문리뷰
  • 알고리즘
  • 단계별
  • 자바
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
pullwall

Well done! 코딩

백준 단계별

[Java] 백준 3052: 나머지

2023. 1. 10. 15:00
728x90
import java.io.*;


public class Main {
	public static void main(String[] args) throws IOException {
		
		boolean arr[] = new boolean[42];
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		for(int i=0;i<10;i++) {
			arr[Integer.parseInt(br.readLine())%42] =true;
		}
		
		int cnt=0;
		for(boolean value : arr) {
			if(value) {
				cnt++;
			}
		}
		System.out.println(cnt);
	}
}

Scanner보다 속도가 빠른 BufferedReader로 해결해 보았다.

 

boolean의 기본 값은 false 이므로

나머지 값으로 설정된 arr의 인덱스에 해당하는 값을 true로 바꿔준 후 true의 갯수만 세면 된다.

 

여기서 같은 값이 있더라도 같은 인덱스에 true로 설정되므로 중복 회피가 가능하다.

 

for문의 콜론은 arr에서 차례대로 값을 가져와 value에 넣겠다는 의미다.

 

if(value)에서 value==true라고 주지 않은 것은 if문은 조건이 true일 경우에만 이하 내용을 실행하기 때문에 

value와 value==true는 의미가 같다.

만약 false 일 때 cnt++ 이라면 if(value==false)라고 해야 할 것이다.

 


import java.util.Scanner;
import java.util.HashSet;
 
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		HashSet<Integer> h = new HashSet<Integer>();
 
		for (int i = 0; i < 10; i++) {
			h.add(in.nextInt() % 42);
		}
        
		in.close();
		System.out.print(h.size());
	}
}

다음으로는 자바 Collection 중 Set의 파생 클래스인 HashSet을 이용해 푸는 방법이다.

 

HashSet의 특징

-중복되는 원소를 넣을 경우 하나만 저장

-순서 개념이 없다

 

중복을 허용하지 않기 때문에 나머지를 HashSet에 저장한 후 HashSet의 크기를 구해 주면 된다.

728x90

'백준 단계별' 카테고리의 다른 글

[Java] 백준 8958: OX퀴즈  (0) 2023.01.11
[Java] 백준 1546: 평균  (0) 2023.01.10
[Java] 백준 5597: 과제 안 내신 분..?  (0) 2023.01.06
[Java] 백준 2562: 최댓값  (0) 2023.01.05
[Java] 백준 10871: X보다 작은 수  (0) 2023.01.05
    '백준 단계별' 카테고리의 다른 글
    • [Java] 백준 8958: OX퀴즈
    • [Java] 백준 1546: 평균
    • [Java] 백준 5597: 과제 안 내신 분..?
    • [Java] 백준 2562: 최댓값
    pullwall
    pullwall

    티스토리툴바