백준 3052번 문제 '나머지' 입니다.
수 10개를 입력받아. 이를 42로 나눈 서로 다른 나머지의 개수를 구합니다.
예를 들어, 1부터 10까지 입력했을 경우
1부터 10까지의 수를 각각 42로 나누었을 때 나머지는 1~10까지로 10개 입니다.
그러므로 출력창에 10이 출력되면 됩니다
배열을 이용한 방법으로 문제를 풀었습니다.
전체적인 문제풀이의 방향은
1.서로 다른 나머지의 개수를 구하면 되므로, boolean 배열을 사용합니다.
2. boolean의 default 값은 0이기 때문에, 입력받은 값을 42로 나눈 값에 해당하는 수의 인덱스를true로 바꿉니다.
3. 마지막으로 반복문을 통해 배열에 존재하는 true의 개수를 셉니다.
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
boolean array[]= new boolean[42];
int count=0;
for (int i=0; i<10; i++){
array[(scan.nextInt()%42)]=true; // 입력받은 값의 42로 나눈 나머지에 해당하는 인덱스의 값을 true로 바꾼다.
}
for (boolean value: array){ // for each문 사용
if (value){
count++; // 인덱스를 순회하며 true의 개수를 count 변수에 반환한다.
}
}
System.out.println(count);
중요한 점은
for each문을 사용했다는 점인데
for (boolean value: array) 의 의미는 array에 있는 요소들을 차례로 가져와서 value 변수에 할당한다는 뜻입니다.
그 후 if문을 사용하여 if(value) -> value가 true일 때를 의미하며 그럴 경우 count변수를 1 증가시킵니다.
(만약 false일 때를 가르키고 싶을 때는 if(!value)로 수정하면 된다.)
마지막으로 count 값을 출력합니다.
'백준' 카테고리의 다른 글
백준 2439번 '별찍기 -2' (JAVA) (0) | 2024.01.07 |
---|---|
백준 2438번 '별찍기' (JAVA) (0) | 2024.01.07 |
백준 2741번 'N 찍기' (JAVA 11) (0) | 2024.01.07 |
백준 2739번 '구구단' (JAVA 11) (0) | 2024.01.03 |
백준 1157번 '단어 공부' (JAVA 11) (0) | 2024.01.03 |