✔️문제
- 1~100까지 숫자가 입력될 때 한번이라도 입력되었으면 출력하시오.
- 입력: 1 2 3 1 1 2 3 4 5 5
- 정답: 1 2 3 4 5
📍정답
package _16_removeNum;
public class Main_boolean {
public static void main(String[] args) {
boolean arr[] = new boolean[101];
int inArr[] = new int[101];
inArr[0] = 1;
inArr[1] = 2;
inArr[2] = 3;
inArr[3] = 1;
inArr[4] = 1;
inArr[5] = 2;
inArr[6] = 3;
inArr[7] = 4;
inArr[8] = 5;
inArr[9] = 5;
inArr[10] = 7;
inArr[11] = 15;
// 1 2 3 4 5 7 15
for (int i = 0; i<=100; i++) {
arr[inArr[i]] = true;
}
for(int i = 0; i<=100;i++) {
if (arr[i]) {
System.out.print(i+" ");
}
}
}
}
package _16_removeNum;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main2_HashSet {
public static void main(String[] args) {
int inArr[] = {1, 2, 3, 1, 1, 2, 3, 4, 5, 5, 7, 15}; // 초기 데이터
Set<Integer> uniqueNumbers = new HashSet<>(); // 중복 없는 숫자를 저장할 Set
for (int num : inArr) {
uniqueNumbers.add(num); // 중복 자동 제거
}
List<Integer> sortedList = new ArrayList<>(uniqueNumbers);
Collections.sort(sortedList); // 오름차순 정렬
for (int num : uniqueNumbers) {
System.out.print(num + " "); // 정렬되지 않은 중복 제거된 값 출력
}
}
}
Set은 중복을 자동으로 제거하는 자료구조(정렬x)
Set<Integer> uniqueNumbers = new HashSet<>();
오름차순 정렬
1) TreeSet 사용
Set<Integer> uniqueNumbers = new TreeSet<>();
2) List<Integer>로 변환한 뒤 정렬
List<Integer> sortedList = new ArrayList<>(uniqueNumbers); Collections.sort(sortedList);
package _16_removeNum;
import java.util.*;
public class Main3_split {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Set<Integer> uniqueNumbers = new TreeSet<>(); // 중복 제거 + 자동 정렬
System.out.println("1~100까지 숫자를 입력하세요. (공백으로 구분, 엔터 입력 시 종료)");
// 한 줄 입력받기
String inputLine = scan.nextLine();
scan.close();
// 입력된 문자열을 공백 기준으로 나누어 숫자로 변환 후 저장
String[] inputs = inputLine.split("\\s+"); // 여러 개의 공백도 하나로 처리
for (String s : inputs) {
try {
int num = Integer.parseInt(s);
if (num >= 1 && num <= 100) { // 1~100 범위 제한
uniqueNumbers.add(num);
} else {
System.out.println(num + "는 범위를 벗어났습니다. (1~100 사이 숫자만 입력 가능)");
}
} catch (NumberFormatException e) {
System.out.println(s + "는 숫자가 아닙니다. 숫자만 입력하세요.");
}
}
// 정렬된 중복 없는 숫자 출력
for (int num : uniqueNumbers) {
System.out.print(num + " ");
}
}
}
- Scanner를 사용하여 사용자 입력을 한 줄(nextLine())로 받음
- split("\\s+")을 이용해 공백을 기준으로 숫자를 분리
- Integer.parseInt(s)로 숫자로 변환하고, Set<Integer>(TreeSet)에 저장
- 중복 제거 + 자동 정렬된 상태로 출력
'개발인생 > Altorithm' 카테고리의 다른 글
| [알고리즘 기초 100제] 18. 문자열 뒤집기 (0) | 2025.03.14 |
|---|---|
| [알고리즘 기초 100제] 17. 팰린드롬(Palindrome) (1) | 2025.03.14 |
| [알고리즘 기초 100제] 15. 369게임 (0) | 2025.03.12 |
| [알고리즘 기초 100제] 14. 거듭제곱 (0) | 2025.03.12 |
| 별 찍기 패턴 정리💫 (0) | 2025.03.11 |