-
깃허브 1일 1커밋 챌린지
1/27 문제 풀이 내용
이번에 풀어본 문제는
백준 알고리즘 3052번(1차원 배열) 문제
출처 : 백준알고리즘 3052번 문제 새로운 함수를 써보게 되었던 문제 !
다음은 내가 제출한 답안이다.
제출답안(정답처리)
1234567891011121314151617181920212223242526272829303132import java.util.Scanner;import java.util.TreeSet;public class Beakjoon3052 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] arr = new int[10];int[] tot = new int[10];TreeSet<Integer> ts = new TreeSet<Integer>();for (int i = 0; i < 10; i++) {arr[i] = sc.nextInt();}for (int i = 0; i < 10; i++) {int na = arr[i] % 42;tot[i] = na;ts.add(tot[i]);}int count = 0;for(int n : ts) {count++;}System.out.println(count);}}cs ▶ 문제 풀이 방식
1. 10개의 숫자를 저장할 int[] arr을 만든다.
2. for문을 이용해 10개의 숫자를 각각 배열에서 하나씩 꺼내 42로 나눈 나머지를 새로운 int[] tot에 저장한다.
3. TreesSet()를 이용하여 int[] tot에 있는 중복값을 제거한다.
4. for Each문을 이용해 Treeset ts에 담긴 갯수만큼 count++를 한다.
◆ TreeSet
TreeSet은 Set 인터페이스를 구현한 클래스로 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는
Set의 성질을 그대로 가지고 있다. (비슷한 클래스로 HashSet이 있다.)
그래서 이번 문제에 중복 값을 제거하는 용도로 TreeSet()를 사용하였다. (import를 해줘야 한다.)
1234567891011121314151617TreeSet<Integer> ts = new TreeSet<Integer>();TreeSet<Integer> ts = new TreeSet<>();// <>안의 값은 파라미터 타입// new의 파라미터 타입은 생략가능//문제에 활용for (int i = 0; i < 10; i++) {int na = arr[i] % 42;tot[i] = na;ts.add(tot[i]); //add를 이용해 값을 추가}cs 순서는 정렬되지 않는다는 점을 명심하자! (순서 정렬을 하고싶다면 Arrays.sort() 를 이용하면 된다.)
◆ For Each ( = 포콜론 )
기존 for문과 똑같은 반복문이지만 for문보다 더 간단하게 배열에 저장된 모든 값을 반복해서 꺼내는 방법이다.
- 문법의 형태
for( 타입 변수 : 배열이나 컨테이너 값 )
{
반복 수행문
}
기본 문법에 : (콜론)이 쓰여서 java에서는 포(for) 콜론이라고도 부른다.
12345//문제에 활용for(int n : ts) { // ts 배열에 담긴 값의 갯수만큼 for문을 반복count++;}cs 'etc > 알고리즘' 카테고리의 다른 글
[백준] 10951 자바(JAVA) : A + B - 4 (0) 2021.01.31 [백준] 2577 자바(JAVA) : 숫자의 개수 (0) 2021.01.31 [백준] 10952 자바(JAVA) : A+B - 5 (1) 2021.01.13 댓글