> 개발-IT-인터넷/> JAVA

[해커랭크(HackerRank) JAVA 풀이] - Java Iterator

jini:) 2023. 10. 31. 09:13
728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Object Oriented Programming > Java Iterator
 

HackerRank

HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical talent from anywhere!

www.hackerrank.com

 

 

Java Iterator 클래스를 사용하면 컬렉션의 모든 요소를 반복할 수 있습니다. 다음은 간단한 예입니다.

import java.util.*;
public class Example{

    public static void main(String []args){
        ArrayList mylist = new ArrayList();
        mylist.add("Hello");
        mylist.add("Java");
        mylist.add("4");
        Iterator it = mylist.iterator();
        while(it.hasNext()){
            Object element = it.next();
            System.out.println((String)element);
        }
    }
}

이 문제에서는 func 메서드를 완료해야 합니다. 이 메서드는 ArrayList를 입력으로 사용합니다. 그 ArrayList에는 하나 이상의 정수가 있고 특수 문자열 "###"이 있고 그 뒤에 하나 이상의 다른 문자열이 있습니다. 샘플 ArrayList는 다음과 같습니다.

element[0]=>42
element[1]=>10
element[2]=>"###"
element[3]=>"Hello"
element[4]=>"Java"

코드가 특수 문자열 "###" 뒤에 오는 요소만 인쇄하도록 최대 2줄을 편집하여 func 메서드를 수정해야 합니다. 위 샘플의 경우 출력은 다음과 같습니다.

Hello
Java

Note : 표준 입력에는 "###" 문자열이 포함되어 있지 않으며 기본 메서드에 추가됩니다.

편집기에서 원래 코드를 복원하려면 편집기에서 왼쪽 상단 아이콘을 클릭하고 새 버퍼를 만듭니다.

 

 

Code

import java.util.*;
public class Main{
	
   static Iterator func(ArrayList mylist){
      Iterator it=mylist.iterator();
      while(it.hasNext()){
         Object element = it.next(); // ~~~Complete this line~~~
         //Hints: use instanceof operator
         if(element instanceof String) // ~~~Complete this line~~~

			break;
		}
      return it;
      
   }
   @SuppressWarnings({ "unchecked" })
   public static void main(String []args){
      ArrayList mylist = new ArrayList();
      Scanner sc = new Scanner(System.in);
      int n = sc.nextInt();
      int m = sc.nextInt();
      for(int i = 0;i<n;i++){
         mylist.add(sc.nextInt());
      }
      
      mylist.add("###");
      for(int i=0;i<m;i++){
         mylist.add(sc.next());
      }
      
      Iterator it=func(mylist);
      while(it.hasNext()){
         Object element = it.next();
         System.out.println((String)element);
      }
   }
}

 

 

Iterator
컬렉션(Collection) 객체의 요소를 순회하고 접근하는 데 사용되는 인터페이스.
리스트(List), 집합(Set), 맵(Map) 등과 같은 컬렉션에서 사용.
컬렉션의 내용을 읽을 때 데이터에 대한 구체적인 구현을 신경 쓰지 않고도 순회 가능.

Iterator 주요 메서드
1. hasNext() : 다음 요소가 존재하는지 여부를 확인하는 메서드. 'true' 또는 'false' 반환.
2. next() : 다음 요소를 반환하고, 커서를 다음 요소로 이동. 반환 값은 Object 형식이므로 해당 요소를 형변환하여 사용.
3. remove() : 현재 가리키고 있는 요소를 삭제. 이 메서드는 필수가 아니며, 모든 컬렉션에서 지원하지는 않음.

 

 

개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.

 

 

 

728x90
반응형