1. 틀렸던 것
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashSet<Integer> set = new HashSet<>();
int N = sc.nextInt();
for (int i = 1; i <= N; i++) {
if(N%i == 0) {
set.add(i);
}
}
Iterator iter = set.iterator();
while (iter.hasNext()){
System.out.print(iter.next()+ " ");
}
}
}
set은 값이 저장된 순서와 상관없이 무작위로 내부에 저장되는 것을 간과했다.
오름차순을 원하는 답과 다르다.
Iterator에 대하여
<참고>
[JAVA] Iterator :: 정신과 시간의 방 (tistory.com)
iterator는 책갈피이다. 기본 위치는 항상 해당 자료구조 첫 값 시작 전이다. iterator는 반복자 라고 부른다.
hasNext() : iterator가 갈 수 있는 다음 값이 존재합니까? 존재하면 true 아니면 false 반환
iterator.next(): 반복자를 다음 값으로 이동.
iterator.remove(): 반복자가 현재 있는 index의 값을 컬렉션에서 제거함.
만약 사용자가 반복자를 처음 위치로 되돌려 놓지 않으면 반복자는 next()로 간 위치에 머물러 있는다.
해당 반복자를 다시 되돌려 놓으려면 밑과 같이 재 할당 해야 한다.
2. 정답
import java.util.ArrayList;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
int N = sc.nextInt();
for (int i = 1; i <= N; i++) {
if(N%i == 0) {
list.add(i);
}
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+ " ");
}
}
}
0