오늘은 시간이 없어서 문제를 많이 풀지 못했다.
거기다 수요일이라 5시에 퇴근해서
퇴근하기 전 벨로그에 정리한다.
문제
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
입력
입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.출력
출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.
예제 입력
3
1
4
5
7
9
6
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30예제 출력
2
8
class Main {
public static void main (String[] args) throws java.lang.Exception {
Scanner in = new Scanner(System.in);
int [] students = new int [28];
int [] all_students = new int [30];
//<1>
for(int j =0; j<30; j++){
all_students[j] = j+1;
}
for(int i =0; i<28; i++){
int number_i = in.nextInt(); //<2>
students[i] = number_i;
//<3>
for(int k=0; k<30; k++){
if(all_students[k] == students[i]){
all_students[k]=0;
}
}
}
//<4>
for(int a=0; a<all_students.length; a++){
if(all_students[a] !=0){ //<5>
System.out.println(all_students[a]);
}
}
}
}
<1> 먼저 1번부터 30번까지 숫자를 all_students에 담는다.
<2> 입력받은 28개의 숫자를 students에 담는다.
<3> students와 all_students를 비교하며 같은 숫자는 all_students에서 0으로 바꾼다.
<4> all_students를 순회하며
<5> 0인 값을 제외하고 출력한다.
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
예제 입력
39
40
41
42
43
44
82
83
84
85예제 출력
6
class Main {
public static void main (String[] args) throws java.lang.Exception {
Scanner in = new Scanner(System.in);
int [] numbers = new int [10];
//입력받는 10개의 수를 42로 나눈 나머지로 numbers 배열에 넣음
for(int j =0; j<10; j++){
int num_j = in.nextInt() % 42;
numbers[j] = num_j;
}
int[] result = Arrays.stream(numbers)
.distinct() // 중복된 값 제거
.toArray(); // 다시 배열로 변환
System.out.println(result.length);
}
}
이 문제를 푸는데 시간이 오래걸렸다.
왜냐하면 numbers 배열을 순회하면서 for문으로 같은 값이 있을 경우 cnt변수에 +1을 하는 쪽으로 생각했었다.
그런데 도저히 답이 나오지 않아서 그냥 서칭했다..
중복값을 제거하는 코드를 찾고 result라는 배열을 새로 만든 다음
length함수로 크기를 찾아내는 방법으로 해결했다...
내가 풀었다고는 할 수 없지만 ㅜ
그렇다고 계속 머리 꽁꽁 싸맬 수는 없었다..