수열 A/B가 있고, 수열 A에서 각각의 순서를 변경하여 수열 B를 만들 수 있는 경우 참, 아닐 경우 거짓을 출력한다.

Ex )
A : 1 1 2 3 4 6
B : 6 1 2 1 4 3
답 : 참 

A : 1 1 2 3 4 6
B : 6 5 2 1 1 3
답 : 거짓

sample_input.txt

3
1 2 3
3 2 1
6
1 1 2 3 4 6
6 1 2 1 4 3
10
1 2 3 4 5 6 7 8 9 10
11 1 2 3 4 5 6 7 8 9
6
1 1 2 3 4 6
6 5 2 1 1 3

 

근데 이 문제가 백준에서 가져온 것 같은데 어떤 문제인지를 못 찾아 채점을 못 하네 -_-;;

 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;

public class Series {
	public static void main(String[] args) throws FileNotFoundException {
		System.setIn(new FileInputStream("res/sample_input.txt"));
		
		Scanner sc = new Scanner(System.in);
		
		int N;
		while(true) {
			try {
				N = Integer.parseInt(sc.nextLine());	// 수열의 길이를 받는다.
			} catch (Exception e) {	// 더이상 다음 문제가 없으면 종료.
				break;
			}

			String[] seriesA = sc.nextLine().split(" ");	// 각 라인의 수열을 읽어 공백으로 나누어 배열에 담는다.
			Arrays.sort(seriesA);	// 문자열 기준으로 정렬되서 1, 10, 2, 3, 4... 이런 순서로 정렬되지만 비교만 할거라 상관 없다.
			String[] seriesB = sc.nextLine().split(" ");
			Arrays.sort(seriesB);

			for (int i = 0; i < N; i++) {	// 입력된 수열의 길이만큼 반복
				if (seriesA[i].equals(seriesB[i])) {
					if (i == N-1) {	// 마지막까지 같다면 True를 출력.
						System.out.println("True");
					}
					continue;
				} else {	// 한 번이라도 서로 다를 경우 False를 출력 후 정지.
					System.out.println("False");
					break;
				}
				
			}

		}
		
	}

}

 

그냥 seriesA, seriesB를 바로 비교하면 될 것 같았는데 이렇게는 모두 False가 뜬다.

if (seriesA.equals(seriesB)) {
				System.out.println("True");
			} else {
				System.out.println("False");
			}
            
==> 전부 False가 뜸...

마찬가지로 hsahCode()를 써도 안 된다. 아마 값은 같아도 Object는 서로 다른 2개의 메모리 공간에 있는 녀석들이라 무조건 값을 비교해야 하는구나...

 

 

LCS(Longest Common Subsequence) 라는 알고리즘이라는 것 같다... 다른 풀이는 어떻게 되어있나 봐야겠네.

 

 

 

12bme.tistory.com/91

 

[자바성능] 자료형 성능 비교

일반적인 프로젝트에서 VO객체 패턴을 많이 사용합니다. 그 객체 안에는 대부분 Collection이나 Map 등의 인터페이스를 상속받는 객체가 많이 사용됩니다. 대부분 목록 데이터를 가장 담기 좋은 것��

12bme.tistory.com

coding-factory.tistory.com/553

 

[Java] 자바 Vector 사용법 & 예제 총정리

Vector란? Vector는 ArrayList와 동일한 내부구조를 가지고 있습니다. ArrayList와 마찬가지로 Vector내부에 값이 추가되면 자동으로 크기가 조절되며 그다음 객체들은 한 자리씩 뒤로 이동됩니다. 하지만

coding-factory.tistory.com

 

'개발자 > Algorithm' 카테고리의 다른 글

Kruskal's Algorithm  (0) 2020.09.14
05. 장기판 포 말잡기  (0) 2020.08.30
04. 토끼 잡기  (0) 2020.08.28
01. 괄호 짝 유효 여부와 N번째 괄호 짝 찾기  (0) 2020.08.24
Dynamic Programing  (0) 2020.04.21

+ Recent posts