프로그래밍 언어/Java

(Python -> Java) 2차원 배열과 정렬

코딩 악귀 2023. 9. 5. 17:44

1. 기존 Python 코드

해야할 기능은 다음과 같다.

  • 2차원 배열로 데이터 저장하기
  • 2차원 배열 정렬하기
  • 2차원 배열 순회하기

2. Java 변환 시도


3. 다른 사람의 Java 코드

빠른 입력

일반 Scanner가 아니라, InputStreamReader -> Bufferedreader로 해야 빠른 것 같다.

 

readLine으로 한 줄 입력을 받고, 바로 parse하거나

또는 StringTokenizer로 문자열을 공백기준으로 split 하고 각각 parse한다.


Comparable을 implements하는 클래스

그냥 무지성으로 2차원 배열을 만들었었다.

[x, y] 좌표를 가지는 배열 하나, 이 배열들의 배열로 2차원으로 말이다.

Java는 oop에 충실한 언어인 만큼, [x, y]를 배열로 하지말고 class로 선언한다.

그리고 이 class에서 Comparable을 구현하면, 정렬은 간편하게 할 수 있다.

 

이런식으로도 가능하다


Comparable 객체 단순화

나는 cmpToKey에 가깝게 구현을 했다.

Comparator에서 자료형별로 compare하는 메소드가 존재한다.

다중 조건 정렬에 활용할 수 있는, then~ 시리즈도 존재한다.


4. 피드백

Python의 tuple 식으로 변수 초기화 하는게 습관이 되어있다. ;로 할 것.

 

InputStream과 StringTokenizer로 빠른 입출력 할 것.

 

다차원 배열이 아닌, 객체에 집중하기

 

Comparable를 implent하면 sort기준이 형성된다.

 

또는, sort에 Comparable 객체를 넘겨주면 가능하다.
이 때, comparing~과 thencomparing~을 통해 단순하게 가능하다