[백준 Array] 3082번 문제

Kwon·2023년 10월 31일

백준

목록 보기
8/22

사진 출처 : https://www.acmicpc.net/

백준 3082번 문제

풀이

이번 문제는 ... 멋사 들어오기 전 2~3일 동안 끙끙 앓다 오늘 푸니깐 20분 만에 푼 문제다. 자바에 익숙치 않던 나는 이제서야 list 활용에 눈을 떳다.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Array8 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = 10;  // 같은 값 카운트 할 변수
        List<Integer> list = new ArrayList<>();

        for (int i = 0; i < 10; i++) {
            int num = sc.nextInt();
            num %= 42;
            list.add(num);
        }

        for (int i = 0; i < list.size(); i++) {
            for (int j = i; j < list.size() ; j++) {
                if (i == j) continue;
                if (list.get(i) == list.get(j)) {
                    list.set(j, -1);
                }
            }
        }

        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == -1) count --;
        }
        System.out.println(count);
    }
}

1. 받을 값 10개 입력 및 변수 설정

Scanner sc = new Scanner(System.in);
int count = 10;  // 같은 값 카운트 할 변수
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
    int num = sc.nextInt();
    num %= 42;
    list.add(num);
}

동적 할당이 가능한 List를 선언 후 반복문을 통해 값을 넣어준다.

2. 이중 for문을 사용한 조건 값 설정

for (int i = 0; i < list.size(); i++) {
    for (int j = i; j < list.size() ; j++) {
        if (i == j) continue;
        if (list.get(i) == list.get(j)) {
            list.set(j, -1);
        }
    }
}

첫 번째 for문엔 찾을 값 기준을 잡고 두 번째 for문엔 자신을 제외한 다른 값에 같은 값이 들어있는지 검사하는 반복문을 생성했다.

자신과 같은 자리 검색 시 continue
자신과 같은 값을 발견 시 -1로 값 설정

3. 서로 다른 값 결과 추출 및 결과 추출

for (int i = 0; i < list.size(); i++) {
    if (list.get(i) == -1) count --;
}
System.out.println(count);

마지막 반복문을 돌려 10값을 갖는 count값이 list에 -1 값이 발견된다면 하나 씩 -1 하게 끔 설정해줬다.

profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글