Coding Test/BaekJoon
[BaekJoon Java] 나머지(3052)
momong'-'
2020. 12. 26. 19:05
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의 갯수를 알려주는 메소드
불필요한 변수를 지워 코드길이도 줄고 시간도 줄고 메모리도 줄었다ㅎㅎ :)