ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BaekJoon Java] 나머지(3052)
    Coding Test/BaekJoon 2020. 12. 26. 19:05

    www.acmicpc.net/problem/3052

     

    3052번: 나머지

    각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

    www.acmicpc.net


    • 문제

    두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

    수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

    • 예제 입출력

    • 풀이
    package step.array.one_dimensional;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    /**
     * 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
     * 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
     * @author imj10
     *
     */
    public class Balance {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		List<Integer> list = new ArrayList<Integer>();
    		
    		int count = 0;
    		
    		for ( int i=0; i <10; i++ ) {
    			int input = sc.nextInt();
    			
    			if ( !list.contains(input%42) ) {
    				list.add(input%42);
    				count++;
    			}
    		}
    		
    		System.out.println(count);
    	}
    }

     

    • 결과


    • 추가설명

    ArrayList를 하나 생성했다. 

    list: 42로 나눈 나머지를 넣어줄 list이다.

    contains를 사용하여 list에 나머지가 존재하지 않을 경우에만 list에 담아줫다.

     

    ArrayList.contains(Object o): o가 list에 있을 경우 true 반환

     

    그럼 자연스럽게 중복이 제거되어 다른 나머지 값들만 list에 담긴다.


    • 풀이2
    package step.array.one_dimensional;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    /**
     * 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
     * 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
     * @author imj10
     *
     */
    public class Balance {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		List<Integer> list = new ArrayList<Integer>();
    		
    		for ( int i=0; i <10; i++ ) {
    			int input = sc.nextInt();
    			
    			if ( !list.contains(input%42) ) {
    				list.add(input%42);
    			}
    		}
    		
    		System.out.println(list.size());
    	}
    }

     

    • 결과2


    • 추가설명2

    블로그에 글을 쓰다 생각났다.  변수 count를 사용하지 않고

    list.size();를 사용했다.

     

    ArrayList.size(): arrayList의 갯수를 알려주는 메소드

     

    불필요한 변수를 지워 코드길이도 줄고 시간도 줄고 메모리도 줄었다ㅎㅎ :)

Designed by Tistory.