728x90
오류가 발생한 나의 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = 1;
int arr[] = new int[10];
for (int i = 0; i <= 9; i++) { // for문 시작
arr[i] = (sc.nextInt()) % 42;
} // for문 종료
for (int i = 0; i <= 9 ; i++) {
for(int j = i+1; j<=9 ; j++) {
if(arr[i] != arr[j]) {
count++;
}
}
}
System.out.println(count);
sc.close();
}
}
1. 나머지 값이 다른 숫자들을 체크할 count 변수 생성.
2. 배열을 만들고 반복문을 활용하여 나머지 값들을 배열 arr에 대입한다.
3. 이중 반복문을 사용해서 배열[i]와 배열 [i+1]를 비교한다.
이렇게 세가지의 조건은 정답에 가까웠으나 그 이상 나가기가 어려웠다.
인터넷에서 참고한 정답 코드를 참고해보자.
인터넷에서 참고한 정답 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = 1;
boolean bl; // n번째와 n+1번째랑 비교하기 위한 변수
int arr[] = new int[10];
for (int i = 0; i < arr.length; i++) { // for문 시작
arr[i] = (sc.nextInt()) % 42;
} // for문 종료
for (int i = 0; i < arr.length; i++) {
bl = false; // 기본값을 false로 설정
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
bl = true; // 같다면 bl 값을 true로 변경
break; // 한 번만 비교하면 되니 조건이 성립하면 벗어나기
}
}
if (bl == false) {
count++; // bl 값이 false일 때 카운트 1 증가
} // 만약 true면 나머지가 서로 같다는 뜻이니 카운트를 올릴 필요가 없다.
}
System.out.println(count);
sc.close();
}
}
1. boolean bl; 을 사용하며 비교 변수를 추가하여, arr[i]와 arr[i+]가 동일할때 bl을 true로 바꾸고 arr[i]번째의 비교를 멈추게 했다.
2. i는 증가하였고, 다시 for문은 시작되며 bl의 값은 false로 변경된다. 이 때 아무도 겹치지 않는다면 count의 값이 증가하도록 하였다.
https://velog.io/@cksgh989/123의 코드를 참고하였습니다.
반응형
'Basic > 코딩테스트' 카테고리의 다른 글
Comparable과 Comparator (0) | 2022.05.13 |
---|---|
[브론즈3] 백준 10817번 자바(JAVA) - 세 수 (0) | 2022.05.10 |
[브론즈3] 백준 2440번 자바(JAVA) - 별 찍기 - 3 (0) | 2022.05.10 |
[브론즈2] 백준 1152번 자바(JAVA) - 단어의 개수 (0) | 2022.04.26 |
[브론즈2] 백준 2577번 자바(JAVA) - 숫자의 개수 (0) | 2022.04.20 |