Coding Test/BaekJoon

[BaekJoon Java] 나머지(3052)

momong'-' 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의 갯수를 알려주는 메소드

 

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