반응형
🔺 문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
// 입력받기
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] A = new int[N];
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0 ; i < N ; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
int[] B = new int[M];
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0 ; i < M ; i++) {
B[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(B); // 정렬하기
int answer = 0;
for(int i = 0 ; i <= N - M ; i++) { // 탐색할 A 배열 구간에서의 시작점
int[] tmp = new int[M]; // 구간 내 값들을 담을 임시 배열
int idx = 0;
for(int j = i ; j < i + M ; j++) { // 탐색할 A 배열 구간에서의 끝점
tmp[idx++] = A[j];
}
// 정렬 후 두 배열의 값이 같다면, 아름다운 수열 수 + 1
Arrays.sort(tmp);
boolean isSame = true;
for(int j = 0 ; j < M ; j++) {
if(tmp[j] != B[j]) {
isSame = false;
break;
}
}
if(isSame) answer++;
}
System.out.println(answer);
}
}
|
cs |
🧩 해결 아이디어
• 완전탐색
- int형 배열 A, B를 입력받고, B배열을 정렬한다.
- A 배열에서 탐색할 구간을 설정한다.
- 해당 구간에서의 값을 임시 배열 tmp에 넣는다.
- tmp 배열의 값을 정렬한다.
- 정렬 후, B 배열의 값과 tmp 배열의 값이 완전히 같다면, 정답의 갯수 + 1해준다.
🔺 다른 풀이들
나처럼 임시 배열 tmp 인덱스 올릴 때, 이렇게 하심..!!
int[] tmp = new int[101];
for (int j = i; j < i + m; j++) {
tmp[A[j]]++;
}
그리고 배열 두 개 같은지 비교할 때 Arrays.equals() 메소드 사용하심
if (Arrays.equals(tmp, B)) {
answer++;
}
💬 느낀 점
빠르게 풉시다 좀ㅠ
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ equals vs Arrays.equals 차이
- equals ; 두 객체 비교
- Arrays.equals ; 두 배열의 내용물 비교
자바에서 equals 랑 Array.equals
자바에서 배열을 비교할때 아래 두개의 차이점이 뭔가요? array1.equals(array2); Arrays.equals(array1, array2);
qna.programmers.co.kr
[Java]두 배열을 비교하는 방법
두 배열을 비교하는 방법 Java에서 두 배열을 비교해야 하는 경우 다음 조건을 만족하면 동일하다고 판단합니다. - 두 배열은 모두 동일한 타입입니다. - 두 배열은 동일한 수의 요소를 가지고 있
developer-talk.tistory.com
반응형
'코테 > 코드트리' 카테고리의 다른 글
[코드트리/NOVICE MID] G or H 2 (JAVA) (0) | 2023.11.10 |
---|---|
[코드트리/NOVICE MID] 바구니 안의 사탕 2 (JAVA) (0) | 2023.11.10 |
[코드트리/NOVICE MID] 특정 구간의 원소 평균값 (JAVA) (0) | 2023.11.10 |
[코드트리/NOVICE MID] G or H 3 (JAVA) (0) | 2023.11.10 |
[코드트리/NOVICE MID] 원 모양으로 되어있는 방 (JAVA) (0) | 2023.11.08 |